1489 蜥蜴和地下室
题目来源: CodeForces
基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题

 收藏
 关注

哈利喜欢玩角色扮演的电脑游戏《蜥蜴和地下室》。此时,他正在扮演一个魔术师。在最后一关,他必须和一排的弓箭手战斗。他唯一能消灭他们的办法是一个火球咒语。如果哈利用他的火球咒语攻击第i个弓箭手(他们从左到右标记),这个弓箭手会失去a点生命值。同时,这个咒语使与第i个弓箭手左右相邻的弓箭手(如果存在)分别失去b(1 ≤ b < a ≤ 10)点生命值。

因为两个端点的弓箭手(即标记为1和n的弓箭手)与你相隔较远,所以火球不能直接攻击他们。但是哈利能用他的火球攻击其他任何弓箭手。

每个弓箭手的生命值都已知。当一个弓箭手的生命值小于0时,这个弓箭手会死亡。请求出哈利杀死所有的敌人所需使用的最少的火球数。

如果弓箭手已经死亡,哈利仍旧可以将他的火球扔向这个弓箭手。

Input
第一行包含3个整数 n, a, b (3 ≤ n ≤ 10; 1 ≤ b < a ≤ 10),第二行包含n个整数——h1,h2,...,hn (1 ≤ hi ≤ 15), hi 是第i个弓箭手所拥有的生命力。
Output
以一行输出t——所需要的最少的火球数。
Input示例
3 2 1
2 2 2
Output示例
3

dfs   -.-   注意血量最后要小于0

代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int shu[12];
int ans;int n,a,b;
void dfs(int xx,int lp,int shu[])
{if (xx==n){while (shu[xx-1]>=0){lp++;shu[xx-1]-=a;}ans=min(ans,lp);return ;}while (shu[xx]>=0||shu[xx-1]>=0){if (shu[xx-1]<0){int p[10];for (int i=0;i<n;i++)p[i]=shu[i];dfs(xx+1,lp,p);}lp++;shu[xx]-=a;shu[xx-1]-=b;shu[xx+1]-=b;}int p[10];for (int i=0;i<n;i++)p[i]=shu[i];dfs(xx+1,lp,p);
}
int kk(int bb,int xx)
{int lp=0;while (xx>=0){lp++;xx-=bb;}return lp;
}
int main()
{int s=0,lp;scanf("%d%d%d",&n,&a,&b);for (int i=0;i<n;i++)scanf("%d",&shu[i]);lp=kk(b,shu[0]);shu[0]-=b*lp;shu[1]-=a*lp;shu[2]-=b*lp;s+=lp;lp=kk(b,shu[n-1]);shu[n-2]-=a*lp;shu[n-1]-=b*lp;shu[n-3]-=b*lp;s+=lp;ans=11111;n--;dfs(1,0,shu);printf("%d\n",ans+s);return 0;
}

51nod oj 1489 蜥蜴和地下室【dfs】相关推荐

  1. 51nod 1489 蜥蜴和地下室

    题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 哈利喜欢玩角色扮演的电脑游戏<蜥蜴和地下室>.此时,他正在扮演一个魔术 ...

  2. 1489 蜥蜴和地下室

    思路:先把最左和最右的干掉,剩下的再一起dfs.dfs的时候注意当第cur-1个死了之后(而第cur个不要求必须死)才向后面搜索第cur+1个. 当前的第cur个可以被扔在自己身上的火球,也可被扔在第 ...

  3. 51Nod 蜥蜴和地下室(搜索)

    哈利喜欢玩角色扮演的电脑游戏<蜥蜴和地下室>.此时,他正在扮演一个魔术师.在最后一关,他必须和一排的弓箭手战斗.他唯一能消灭他们的办法是一个火球咒语.如果哈利用他的火球咒语攻击第i个弓箭手 ...

  4. 蜥蜴与地下室(51Nod-1489)

    题目 哈利喜欢玩角色扮演的电脑游戏<蜥蜴和地下室>.此时,他正在扮演一个魔术师.在最后一关,他必须和一排的弓箭手战斗.他唯一能消灭他们的办法是一个火球咒语.如果哈利用他的火球咒语攻击第i个 ...

  5. 蜥蜴和地下室(深搜)

    个人心得:心态炸了,玩了10天的国庆来,感觉脑子太短路了,好不容易理清思路,就是先将俩边的打死,然后中间的就只能将左边的杀死才能继续深搜, 但此时如果还大于0,就有俩种选择就是直接打死或者借助右边的打 ...

  6. 51nod 1307 绳子与重物 二分+dfs / 并查集

    题目链接: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1307 题意: 题解: 方法一: 因为所有绳子最终组成了1棵树 ...

  7. zzuli oj 2532: 婷婷是土豪 DFS深搜

    2532: 婷婷是土豪 题目描述 众所周知婷婷是我们组大土豪,组里找他借钱和还钱的都有一大堆,借钱的太多了,每天晚上他都要抱怨没钱了. 每天早上,找婷婷借钱的都排成一条长队,假设还钱的有m个,借钱的有 ...

  8. OJ:L3-001 凑零钱 DFS

    解题报告-L3-001-凑零钱 韩梅梅喜欢满宇宙到处逛街.现在她逛到了一家火星店里,发现这家店有个特别的规矩:你可以用任何星球的硬币付钱,但是绝不找零,当然也不能欠债.韩梅梅手边有 10​4​​ 枚来 ...

  9. 51nod oj 1072 威佐夫游戏 1185 威佐夫游戏 V2【威佐夫博奕】

    题目链接:1072 1072 威佐夫游戏 基准时间限制:1 秒 空间限制:131072 KB 分值: 0  难度:基础题  收藏  关注 有2堆石子.A B两个人轮流拿,A先拿.每次可以从一堆中取任意 ...

最新文章

  1. Oracle 11g新特性之--虚拟列(Virtual Column)
  2. 手机腾讯视频android版插件,小程序1.6.5版更新,终于支持腾讯视频插件了
  3. ckeditor_3.6.6.2+CKFinder2.0.2配置
  4. 项目信息追踪(Log)
  5. Linux网络编程 | IO模型 :阻塞IO、非阻塞IO、信号驱动IO、异步IO、多路复用IO
  6. Tomcat打包时多项目共享jar和精确指定jar版本
  7. 硬件知识:串口通讯的起始、数据、停止位是怎么分配的?
  8. Android之Windows下搭建React Native Android开发环境(差不多搞了一天)
  9. 数据结构c语言版总结,数据结构:C语言常见算法总结
  10. Windows 系统下.sh文件的运行
  11. 软考信息系统项目管理师2021_信息化与信息系统_项目管理阶段_方法_网络协议---软考高级之信息系统项目管理师003
  12. job用法 Java_Web App使用Quartz实现java schedule job
  13. mysql-5.6.14.tar.gz_CentOS 6.4下编译安装MySQL 5.6.14
  14. F8Net:只有8比特乘法的神经网络量化
  15. 数据--第39课 - 二叉树课后练习
  16. HDFS简介及其功能
  17. 如何进入交换机配置命令窗口
  18. 硅谷课堂第十二课-公众号点播课程和直播管理模块
  19. Java Access Bridge
  20. ThreadLocal的使用场景及使用方式

热门文章

  1. maven本地仓库路径配置
  2. 本质论之封装继承和多态的介绍
  3. 基于组合特征和SVM的视频序列的人体行为识别算法
  4. Winform中MessageBox用法大全
  5. Ubuntu和Windows移动和复制文件
  6. 解决打开VM虚拟机蓝屏问题
  7. mysql dbhelper 下载_DbHelperMySQL
  8. 【超图+CESIUM】【基础API使用示例】22、超图|CESIUM - 标绘面:Cesium.DrawHandler绘制面Cesium.DrawMode.Polygon
  9. Python 字典 实现古诗词答题系统
  10. c语言小程序 万年历,C语言实现万年历小程序