1489 蜥蜴和地下室
思路:先把最左和最右的干掉,剩下的再一起dfs。dfs的时候注意当第cur-1个死了之后(而第cur个不要求必须死)才向后面搜索第cur+1个。
当前的第cur个可以被扔在自己身上的火球,也可被扔在第cur+1个的火球干掉。
1 #include <iostream> 2 #include <queue> 3 #include <stack> 4 #include <cstdio> 5 #include <vector> 6 #include <map> 7 #include <set> 8 #include <bitset> 9 #include <algorithm> 10 #include <cmath> 11 #include <cstring> 12 #include <cstdlib> 13 #include <string> 14 #include <sstream> 15 #include <time.h> 16 #define x first 17 #define y second 18 #define pb push_back 19 #define mp make_pair 20 #define lson l,m,rt*2 21 #define rson m+1,r,rt*2+1 22 #define mt(A,B) memset(A,B,sizeof(A)) 23 #define mod 1000000007 24 using namespace std; 25 typedef long long LL; 26 const int N=2e5+10; 27 const int inf = 0x3f3f3f3f; 28 const LL INF=0x3f3f3f3f3f3f3f3fLL; 29 int x[N]; 30 int n,a,b,ans,res_2=inf; 31 32 33 void dfs(int cur,int num) 34 { 35 int p=0,q; 36 if(cur==n-1) 37 { 38 ans=min(ans,num); 39 return; 40 } 41 if(x[cur-1]<0)dfs(cur+1,num); 42 43 if(x[cur-1]>=0) 44 { 45 p=x[cur-1]/b+1; 46 x[cur-1]-=p*b; 47 x[cur]-=p*a; 48 x[cur+1]-=p*b; 49 dfs(cur+1,num+p); 50 x[cur-1]+=p*b; 51 x[cur]+=p*a; 52 x[cur+1]+=p*b; 53 } 54 q=x[cur]/a+1; 55 if(x[cur]>=0&&q>p) 56 { 57 for(int i=p+1;i<=q;i++) 58 { 59 x[cur-1]-=i*b; 60 x[cur]-=i*a; 61 x[cur+1]-=i*b; 62 dfs(cur+1,num+i); 63 x[cur]+=i*a; 64 x[cur+1]+=i*b; 65 x[cur-1]+=i*b; 66 } 67 } 68 } 69 int main() 70 { 71 #ifdef Local 72 freopen("data.txt","r",stdin); 73 #endif 74 int p=0,q=0; 75 cin>>n>>a>>b; 76 ans=inf; 77 for(int i=0; i<n; i++)scanf("%d",&x[i]); 78 p=x[0]/b+1; 79 x[0]-=p*b;; 80 x[1]-=p*a; 81 x[2]-=p*b; 82 if(x[n-1]>=0) 83 { 84 q=x[n-1]/b+1; 85 x[n-2]-=q*a; 86 x[n-3]-=q*b; 87 x[n-1]-=q*b; 88 } 89 dfs(1,0); 90 if(ans==inf)ans=0; 91 cout<<ans+p+q<<endl; 92 #ifdef Local 93 cerr << "time: " << (LL) clock() * 1000 / CLOCKS_PER_SEC << " ms" << endl; 94 #endif 95 }
View Code
转载于:https://www.cnblogs.com/27sx/p/6266128.html
1489 蜥蜴和地下室相关推荐
- 51nod oj 1489 蜥蜴和地下室【dfs】
1489 蜥蜴和地下室 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 哈利喜欢玩角色扮演的电脑游戏<蜥蜴和 ...
- 51nod 1489 蜥蜴和地下室
题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 哈利喜欢玩角色扮演的电脑游戏<蜥蜴和地下室>.此时,他正在扮演一个魔术 ...
- 51Nod 蜥蜴和地下室(搜索)
哈利喜欢玩角色扮演的电脑游戏<蜥蜴和地下室>.此时,他正在扮演一个魔术师.在最后一关,他必须和一排的弓箭手战斗.他唯一能消灭他们的办法是一个火球咒语.如果哈利用他的火球咒语攻击第i个弓箭手 ...
- 蜥蜴与地下室(51Nod-1489)
题目 哈利喜欢玩角色扮演的电脑游戏<蜥蜴和地下室>.此时,他正在扮演一个魔术师.在最后一关,他必须和一排的弓箭手战斗.他唯一能消灭他们的办法是一个火球咒语.如果哈利用他的火球咒语攻击第i个 ...
- 蜥蜴和地下室(深搜)
个人心得:心态炸了,玩了10天的国庆来,感觉脑子太短路了,好不容易理清思路,就是先将俩边的打死,然后中间的就只能将左边的杀死才能继续深搜, 但此时如果还大于0,就有俩种选择就是直接打死或者借助右边的打 ...
- 华为18级工程师呕心沥血撰写3000页Linux学习笔记教程
"Linux ?它比 Windows更好吗?我能用它打魔兽吗?" "咳!别提了,它操作起来特别麻烦,你得不停地敲击键盘.没准它还会趁你不注意的时候在你的手指头上咬一口呢! ...
- 搜索 —— 深度优先搜索(DFS)
[概述] 深度优先搜索,是从初始状态起,利用一定的规则生成搜索树,寻找下一层任一个结点,检查是否出现目标状态,若未出现,以此状态利用规则生成再下一层任一个结点,再检查,重复过程一直到叶节点(即不能再生 ...
- CF6D--Lizards and Basements 2译文
原题链接-- https://acs.jxnu.edu.cn/problem/CF6Dhttps://acs.jxnu.edu.cn/problem/CF6D Lizards and Basement ...
- 02.14 Lizards and Basements 2
Lizards and Basements 2 | JXNUOJ 描述: This is simplified version of the problem used on the original ...
最新文章
- RHEL6新特性之联网和服务
- cocos2d-x 打包成so文件之后,假设出现错误,能够使用ndk-stack来查看里面的异常...
- java最后一个注解@SuppressWarnings
- 集成运放组成的电压比较器
- 【一张图系列】理解安全上下文
- SQL按照年月员工状态统计出勤情况
- python字典速度能比字典高多少_python – 字典访问速度比较与整数键对字符串键...
- shell 相关知识(1)
- 【BZOJ3196】【Tyvj1730】二逼平衡树,第一次的树套树(线段树+splay)
- C Primer Plus (第6版) 读书笔记_Chapter 1
- Android应用程序线程消息循环模型分析(5)
- 只要掌握了这条法则,你就有赚不完的钱
- Excel 将换行符替换为空
- 6.Composer实现PHP中类的自动加载
- 【迁移学习】算法之TrAdaBoost
- 数据结构实验1-线性表的顺序实现
- java火星坐标转百度坐标_各种地理坐标系的转换,火星坐标,百度坐标,wsg84等...
- 网络重置后网络适配器丢失和网络适配器前面是黄色叹号怎么办?
- C# 实现支持markdown语法编辑器
- 关于手写unshift方法
热门文章
- linux git文件图标,分享|三款 Linux 下的 Git 图形客户端
- [javascript] Date 时间精确到天
- 零拷贝和java NIO
- Hadoop学习(source方式安装篇)
- readfile读取串口数据_西门子PLC-1200-串口Modbus RTU通讯实例
- java如何读取下拉列表的值_java - 如何在Selenium 2中选择/获取下拉选项
- python struct模块_python struct 模块
- linux socket读写函数,Linux网络编程入门
- mysql 自带 数据库_mysql自带的4个数据库介绍
- sql server agent会自动关闭_经常用微信支付,要关闭这个开关,不然每个月都会自动扣钱...