51nod oj 1489 蜥蜴和地下室【dfs】
![](http://file.51nod.com/images/icon/ok.png)
![](http://file.51nod.com/images/icon/star.png)
![](http://file.51nod.com/images/icon/plus.png)
哈利喜欢玩角色扮演的电脑游戏《蜥蜴和地下室》。此时,他正在扮演一个魔术师。在最后一关,他必须和一排的弓箭手战斗。他唯一能消灭他们的办法是一个火球咒语。如果哈利用他的火球咒语攻击第i个弓箭手(他们从左到右标记),这个弓箭手会失去a点生命值。同时,这个咒语使与第i个弓箭手左右相邻的弓箭手(如果存在)分别失去b(1 ≤ b < a ≤ 10)点生命值。
因为两个端点的弓箭手(即标记为1和n的弓箭手)与你相隔较远,所以火球不能直接攻击他们。但是哈利能用他的火球攻击其他任何弓箭手。
每个弓箭手的生命值都已知。当一个弓箭手的生命值小于0时,这个弓箭手会死亡。请求出哈利杀死所有的敌人所需使用的最少的火球数。
如果弓箭手已经死亡,哈利仍旧可以将他的火球扔向这个弓箭手。
第一行包含3个整数 n, a, b (3 ≤ n ≤ 10; 1 ≤ b < a ≤ 10),第二行包含n个整数——h1,h2,...,hn (1 ≤ hi ≤ 15), hi 是第i个弓箭手所拥有的生命力。
以一行输出t——所需要的最少的火球数。
3 2 1 2 2 2
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】相关推荐
- 51nod 1489 蜥蜴和地下室
题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 哈利喜欢玩角色扮演的电脑游戏<蜥蜴和地下室>.此时,他正在扮演一个魔术 ...
- 1489 蜥蜴和地下室
思路:先把最左和最右的干掉,剩下的再一起dfs.dfs的时候注意当第cur-1个死了之后(而第cur个不要求必须死)才向后面搜索第cur+1个. 当前的第cur个可以被扔在自己身上的火球,也可被扔在第 ...
- 51Nod 蜥蜴和地下室(搜索)
哈利喜欢玩角色扮演的电脑游戏<蜥蜴和地下室>.此时,他正在扮演一个魔术师.在最后一关,他必须和一排的弓箭手战斗.他唯一能消灭他们的办法是一个火球咒语.如果哈利用他的火球咒语攻击第i个弓箭手 ...
- 蜥蜴与地下室(51Nod-1489)
题目 哈利喜欢玩角色扮演的电脑游戏<蜥蜴和地下室>.此时,他正在扮演一个魔术师.在最后一关,他必须和一排的弓箭手战斗.他唯一能消灭他们的办法是一个火球咒语.如果哈利用他的火球咒语攻击第i个 ...
- 蜥蜴和地下室(深搜)
个人心得:心态炸了,玩了10天的国庆来,感觉脑子太短路了,好不容易理清思路,就是先将俩边的打死,然后中间的就只能将左边的杀死才能继续深搜, 但此时如果还大于0,就有俩种选择就是直接打死或者借助右边的打 ...
- 51nod 1307 绳子与重物 二分+dfs / 并查集
题目链接: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1307 题意: 题解: 方法一: 因为所有绳子最终组成了1棵树 ...
- zzuli oj 2532: 婷婷是土豪 DFS深搜
2532: 婷婷是土豪 题目描述 众所周知婷婷是我们组大土豪,组里找他借钱和还钱的都有一大堆,借钱的太多了,每天晚上他都要抱怨没钱了. 每天早上,找婷婷借钱的都排成一条长队,假设还钱的有m个,借钱的有 ...
- OJ:L3-001 凑零钱 DFS
解题报告-L3-001-凑零钱 韩梅梅喜欢满宇宙到处逛街.现在她逛到了一家火星店里,发现这家店有个特别的规矩:你可以用任何星球的硬币付钱,但是绝不找零,当然也不能欠债.韩梅梅手边有 104 枚来 ...
- 51nod oj 1072 威佐夫游戏 1185 威佐夫游戏 V2【威佐夫博奕】
题目链接:1072 1072 威佐夫游戏 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 有2堆石子.A B两个人轮流拿,A先拿.每次可以从一堆中取任意 ...
最新文章
- Oracle 11g新特性之--虚拟列(Virtual Column)
- 手机腾讯视频android版插件,小程序1.6.5版更新,终于支持腾讯视频插件了
- ckeditor_3.6.6.2+CKFinder2.0.2配置
- 项目信息追踪(Log)
- Linux网络编程 | IO模型 :阻塞IO、非阻塞IO、信号驱动IO、异步IO、多路复用IO
- Tomcat打包时多项目共享jar和精确指定jar版本
- 硬件知识:串口通讯的起始、数据、停止位是怎么分配的?
- Android之Windows下搭建React Native Android开发环境(差不多搞了一天)
- 数据结构c语言版总结,数据结构:C语言常见算法总结
- Windows 系统下.sh文件的运行
- 软考信息系统项目管理师2021_信息化与信息系统_项目管理阶段_方法_网络协议---软考高级之信息系统项目管理师003
- job用法 Java_Web App使用Quartz实现java schedule job
- mysql-5.6.14.tar.gz_CentOS 6.4下编译安装MySQL 5.6.14
- F8Net:只有8比特乘法的神经网络量化
- 数据--第39课 - 二叉树课后练习
- HDFS简介及其功能
- 如何进入交换机配置命令窗口
- 硅谷课堂第十二课-公众号点播课程和直播管理模块
- Java Access Bridge
- ThreadLocal的使用场景及使用方式
热门文章
- maven本地仓库路径配置
- 本质论之封装继承和多态的介绍
- 基于组合特征和SVM的视频序列的人体行为识别算法
- Winform中MessageBox用法大全
- Ubuntu和Windows移动和复制文件
- 解决打开VM虚拟机蓝屏问题
- mysql dbhelper 下载_DbHelperMySQL
- 【超图+CESIUM】【基础API使用示例】22、超图|CESIUM - 标绘面:Cesium.DrawHandler绘制面Cesium.DrawMode.Polygon
- Python 字典 实现古诗词答题系统
- c语言小程序 万年历,C语言实现万年历小程序