CF6D Lizards and Basements 2

题意:有n个人,编号1到n,每个人有血量 h i h_i hi​对某个人攻击会产生a点伤害,会波及到相邻的人,对相邻的人产生b点伤害(1和n号人不能攻击),问最少要攻击多少次才能让所有人的h小于0,分别攻击了谁。

解法:dfs搜索,先处理出每个人最多攻击多少次,对攻击次数枚举,每次保证当前点前所有人h值已经小于0。

代码

#include<bits/stdc++.h>
using namespace std;
const int N = 20;
int n, a, b, h[N], ci[N], tmp[N];
int res = 1e9, r[N];
void dfs(int step, int ans) {if(ans >= res) return ;//  cout << step << endl;if(step == n) {//      cout << ans << " " << res << " " << h[n] << endl;if(h[n] < 0) {if(ans < res) {for(int i = 2; i <= step; ++i) r[i] = tmp[i];res = ans;}}return;}for(int i = 0; i <= ci[step]; ++i) {if(i*b <= h[step-1]) continue;tmp[step] = i;h[step+1] -= i*b;h[step] -= i*a;dfs(step+1, ans+i);h[step+1] += i*b;h[step] += i*a;tmp[step] = 0;}
}
int main() {scanf("%d%d%d", &n, &a, &b);for(int i = 1; i <= n; ++i) scanf("%d", &h[i]); for(int i = 2; i < n; ++i) {ci[i] = max(h[i]/a, max(h[i-1]/b, h[i+1]/b)) + 1;}dfs(2, 0);printf("%d\n", res);for(int i = 2; i < n; ++i) for(int j = 0; j < r[i]; ++j) printf("%d ", i);puts("");return 0;
}

CF6D Lizards and Basements 2题解相关推荐

  1. CF6D Lizards and Basements 2(暴力dfs || dp)

    题目链接: Lizards and Basements 2 - 洛谷 思路: 看到数据不大,直接枚举每个位置的攻击次数即可.注意左边的弓箭手必须打死,另外,到n-1位置时,还必须把n-1和n都打死. ...

  2. LG-CF6D Lizards and Basements 2

    CF6D Lizards and Basements 2 题目链接 题意翻译 题意 有一队人,你可以用火球点某个人,会对当前人造成a点伤害,对旁边的人造成b点伤害. 不能打1号和n号,求最少多少发点死 ...

  3. 02.14 Lizards and Basements 2

    Lizards and Basements 2 | JXNUOJ 描述: This is simplified version of the problem used on the original ...

  4. CodeForces 6D Lizards and Basements 2(DFS)

    题意:有一串数字,每一次你可以使一个数字减少a,使相邻两个数字减少b,只能操作2-n-1次 思路:直接暴力DFS一波... #include<bits/stdc++.h> using na ...

  5. CodeForces 6D Lizards and Basements 2 (dfs)

    题意:给出一串n个元素序列.a和b,只能选择编号2 ~ n-1的s数字减a,并将相邻两数字减b,要使得所有元素为负,问至少需要多少次选择,选择是怎样的. 题解:dfs 我们可以发现只有2 ~ n-1编 ...

  6. Lizards and Basements 2

    思路 题意:杀死n个敌人,你的火球可以给某个位置的敌人造成a点伤害,并且给该位置的相邻位置造成b点溅射伤害,并且你不能直接发火球攻击第一个和最后一个敌人,求最少需要多少次火球 做法:dfs,不过这里有 ...

  7. CF6D--Lizards and Basements 2译文

    原题链接-- https://acs.jxnu.edu.cn/problem/CF6Dhttps://acs.jxnu.edu.cn/problem/CF6D Lizards and Basement ...

  8. Codeforces Beta Round #6 (Div. 2)【未完结】

    2022.3.4 题单地址:https://codeforces.com/contest/6 目录 A. Triangle[枚举] B. President's Office[枚举] C. Alice ...

  9. 老鱼的-kuangbin专题题解

    kuangbin专题问题一览 专题一 简单搜索 POJ 1321 棋盘问题 POJ 2251 Dungeon Master POJ 3278 Catch That Cow POJ 3279 Flipt ...

最新文章

  1. as 不显示gradle视图_Python构建RESTful网络服务[Django篇:基于类视图的API]
  2. DNS_ARP_DHCP协议
  3. 上传第三方jar包到nexus
  4. 逆袭之旅.DAY08东软实训.多态~
  5. getprocaddress得到为0_基于ZU+系列MPSoC芯片的USB3.0/2.0接口硬件设计
  6. 接口定义【领域对象】
  7. python第三方库安装(复习)
  8. initrd.img处理
  9. python画饼图存在的问题_python_使用matplotlib画饼状图(pie)
  10. cjson使用_LD3320语音识别模块:LDV7模块使用详解
  11. 《Entity Framework 6 Recipes》中文翻译系列 (11) -----第三章 查询之异步查询 (转)...
  12. /usr/include/x86_64-linux-gnu/bits/types/struct_itimespec.h
  13. 附件 计算机 丢失,帮你找回Win7开始菜单附件丢失的工具
  14. 总结——达内视频(三)
  15. 如何写一个播放器-解析MNVideoPlayer(一)
  16. 20190919-2 功能测试
  17. [hive 报错]:FAILED:SemanticException [Error 10025] Expression not in GROUP BY key
  18. 移远 EC200S 模组(4G Cat.1 通信模组)AT指令测试 TCP/UDP 通信过程
  19. Java字符串分割方法split()的功能以及使用方法的详细介绍!
  20. Dev-C++安装OpenCV

热门文章

  1. Field memberPOMapper in com.aiguigu.crowd.service.impl.MemberServiceImpl required a bean of type ‘co
  2. python--基础知识点--反射机制——hasattr、getattr、setattr、delattr
  3. python中高精度除法_除法 · python · 看云
  4. Chrome访问HTTPS提示您的连接不是私密连接
  5. 梅科尔工作室-郜翱翔-鸿蒙笔记4
  6. Elmedia Player Pro for Mac(视频播放器)
  7. HEC-HMS和HEC-RAS快速入门、防洪评价报告编制及洪水建模、洪水危险性评价等应用
  8. 简洁明了的拓扑图算法讲解
  9. 中国历年存款、贷款利率(1990-2015)Echarts图表设计
  10. 2023年全国职业院校技能大赛-软件测试赛题第8套 - GZ034 软件测试