题解 CF6D CF6D Lizards and Basements 2
时间:2019-08-31
本文章向大家介绍题解 CF6D CF6D Lizards and Basements 2,主要包括题解 CF6D CF6D Lizards and Basements 2使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
$dfs$ 好啊
题意
有一队人,你可以用火球点某个人,会对当前人造成a点伤害,对旁边的人造成b点伤害。
不能打1号和n号,求最少多少发点死所有人。
Note
一个人被打死当且仅当它的血量 <0。
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #include<cstdlib> 6 #include<algorithm> 7 #include<string> 8 #define ll long long 9 #define maxn 100005 10 #define inf 2147483647 11 #define mod 10003 12 #define eps 1e-6 13 #define pi acos(-1.0) 14 #define de(x) ((x)*(x)) 15 using namespace std; 16 inline int read(){ 17 int x=0,f=1; char ch=getchar(); 18 while(!isdigit(ch)) {if(ch=='-')f=-1;ch=getchar();} 19 while(isdigit(ch)) {x=x*10+ch-48;ch=getchar();} 20 return x*f; 21 } 22 int n,a,b,h[15],tot,ans; 23 int p[155],val[155]; 24 inline void check(){ 25 int yu=max(h[n-1]/a+(h[n-1]>=0),h[n]/b+(h[n]>=0)); 26 for(int i=1;i<=yu;i++) p[++tot]=n-1; 27 if(ans>tot){ 28 for(int i=1;i<=tot;i++) val[i]=p[i]; 29 ans=tot; 30 } 31 tot-=yu; 32 } 33 inline void dfs(int now){//标准的dfs 34 if(now>n-1) {check();return;} 35 if(h[now-1]<0) dfs(now+1); 36 int last=tot,A=h[now-1],B=h[now],C=h[now+1]; 37 while(1){ 38 h[now]-=a; h[now-1]-=b; 39 h[now+1]-=b; p[++tot]=now; 40 if(h[now-1]<0) dfs(now+1); 41 if((h[now-1]<0&&h[now]<0)||tot>=ans){ 42 tot=last; 43 h[now-1]=A; h[now]=B; h[now+1]=C; 44 break; 45 } 46 } 47 } 48 signed main(){ 49 n=read(); a=read(); b=read(); 50 for(int i=1;i<=n;i++) h[i]=read(); 51 ans=inf; tot=0; 52 dfs(2); 53 printf("%d\n",ans); 54 for(int i=1;i<=ans;i++) printf("%d ",val[i]); 55 return 0; 56 }
原文地址:https://www.cnblogs.com/cbyyc/p/11440424.html
- 智能家居系统结构
- 一个简单的完全信息动态博弈的解答
- Struts2远程代码执行漏洞S2-052 复现&防御方案
- CENTOS6.5安装CDH5.12.1(二)
- @ControllerAdvice + @ExceptionHandler 处理 全部Controller层异常
- 动态增加表单元素并获取元素的text和value提交
- SpringBoot常用配置
- Json格式String类型字符串转为Map工具类
- spring boot thymeleaf常用方式
- Java工具类- 跨域工具类
- python语言中的AOP利器:装饰器
- 如何使用supervisor管理你的应用
- Manjaro安装配置
- [Golang软件推荐] Frp内网穿透
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 201909-4ccf计算机职业资格认证考试 第四题 推荐系统
- 【Linux_Shell 脚本编程学习笔记四、监控系统内存并报警企业案例脚本】
- PAT (Basic Level) Practice (中文)1042 字符统计 (20 分)
- Pytorch 中的 5 个非常有用的张量操作
- k-近邻算法实现数字识别
- 【Linux_Shell 脚本编程学习笔记五、Oracle JDK1.8 安装shell 脚本】
- vue中子组件使用$emit传值的种种情况
- 前端工程化建设
- 机器学习101-从JAX的角度去实现
- Spring 系列之jdbcTemplate的使用
- 【Linux_Shell 脚本编程学习知识点、判断传入参数是否是 整数】
- 发现一款.NET Core开源爬虫神器:DotnetSpider
- 完整的卸载Jdk java环境教程
- HTML 元素标签语义化及使用场景
- 共享内存原理与VCS监控采集实战