1 题目描述
  2
  3 Yumis最近在玩炉石传说。
  4
  5 在炉石传说中脏牧有一张一费卡片(一费就是使用要消耗1点法力水晶),叫做疯狂药水,这个的效果是将一个敌方场上攻击小于等于2的随从拉到自己的战场内。
  6
  7 还有一张四费卡片叫做暗影狂乱,这个的效果是将一个敌方场上攻击小于等于3的随从拉到自己的战场内。
  8
  9 还有一张一费卡片就是缩小药水,这个的效果是将敌人全场的随从攻击力下降3点。
 10
 11 你PY了炉石的GM所以你有了无数张的这三种卡片,但是GM告诉你缩小药水是这个牌比较不好创建,为了为GM着想你必须在使用最少的缩小药水的情况下A爆对手的脸。
 12
 13 现在你的对手场上有n个随从,每个随从的攻击力是ki点。
 14
 15 你的对手有m点血量。
 16
 17 而你现在要做的就是将敌方的场上的随从拉过来自己的场上并攻击对手(每一个随从只能攻击一次,攻击力为你拉过来的时候随从剩余的攻击力),A爆对面的脸(将对面的血打到0点及以下)。
 18
 19 输入输出格式
 20
 21 输入格式:
 22 第一行用一个空格隔开的两个整数n,m分别代表敌方场上的随从数量和你对手的血量。
 23
 24 第二行n个整数每两个整数之间用一个空格隔开,分别代表敌方场上每一个随从的攻击力ki。
 25
 26 输出格式:
 27 一行如果可以A爆则输出最少使用的缩小药水的数量和此时使用的法力水晶,两个数据之间用一个空格隔开(如果有多个答案则输出消耗法力水晶最少的答案)。
 28
 29 否则输出“Human Cannot Win Dog”(没有双引号)
 30
 31 输入输出样例
 32
 33 输入样例#1: 复制
 34 3 5
 35 1 2 3
 36 输出样例#1:
 37 0 5
 38 输入样例#2:
 39 8 8
 40 10 20 30 40 50 60 70 80
 41 输出样例#2:
 42 16 23
 43 输入样例#3:
 44 8 80
 45 10 20 30 40 50 60 70 80
 46 输出样例#3:
 47 Human Cannot Win Dog
 48 说明
 49
 50 样例说明1:
 51
 52 敌方场上有3只随从,敌方有5点血量
 53
 54 我们把3攻随从和2攻随从拉过来花费0个缩小药水和5点耗费(一张疯狂药水一个暗影狂乱(1+4 = 5))伤害足够击杀对方。
 55
 56 样例说明2:
 57
 58 使用16个缩小药水(下面数据后面第一个括号指拉过来的时候伤害为多高 ,第二个括号表示拉过来的时候使用多少的缩小药水)
 59
 60 拿10(1)(3)、20(2)(6)、30(3)(9)、50(2)(16)攻的怪物总共造成8点伤害 刚好A爆!
 61
 62 Easy : 保证 0 < n <= 10 并且不存在用到暗影狂乱和缩小药水的情况 20%
 63
 64 Normal :保证 0 < n <= 10 并且不存在用到缩小药水的情况 20%
 65
 66 Hard :保证 0 < n <= 10 30%
 67
 68 Extra:保证0 <= n <= 5000000(6个0),最大攻击力小于30000 30%
 69
 70 保证 0 < n <= 5000000 0 < ki <=30000 0<=m<=5000000 (6个0)
 71
 72 #include <iostream>
 73 #include <cstdio>
 74 #include <cstring>
 75 #include <algorithm>
 76 using namespace std;
 77 inline int read(){
 78     int num=0,f=1; char c=getchar();
 79     while(!isdigit(c)){if(c=='-') f=-1; c=getchar();}
 80     while(isdigit(c)){num=(num<<1)+(num<<3)+(c^48); c=getchar();}
 81     return num*f;
 82 }
 83 #define maxn 30010
 84 int n,m,use,sum,cnt[maxn];
 85 int main(){
 86     n=read(); m=read();
 87     for(int i=1;i<=n;i++){
 88         int x; x=read();
 89         cnt[x]++;
 90     }
 91     int u1=cnt[1],u2=cnt[2],u3=cnt[3];
 92     sum=u1*1+u2*2+u3*3;
 93     for(int i=4;i+2<=maxn and sum<m;i+=3){
 94         u1+=cnt[i]; u2+=cnt[i+1]; u3+=cnt[i+2];
 95         use++;
 96         //sum=1*u1+2*u2+3*u3;
 97         sum+=cnt[i]+cnt[i+1]*2+cnt[i+2]*3;
 98     }
 99     while(sum>=m+3 and u3) sum-=3,u3--;
100     while(sum>=m+2 and u2) sum-=2,u2--;
101     while(sum>=m+1 and u1) sum-=1,u1--;
102     if(sum<m) cout<<"Human Cannot Win Dog";
103     else cout<<use<<" "<<(u3<<2)+u1+u2+use;
104 }
105
106 思路是利用筛的思想,可以归纳一下。
107 筛法无疑是利用了题目中的除的条件,最终加上的攻击力总是1 ,2,3.
108 所以可以筛攻击力,从1到max。筛的过程中不断更新缩小药水(限制变量)。
109 最后若sum比m多1,则删去任意一个为一的攻击力(以此类推)。
110
111 所以筛的思想可用于,给定几个定值,之后其他量都需变化成这几个值。

转载于:https://www.cnblogs.com/79707536wc/p/7753239.html

洛谷 肮脏的牧师 题解相关推荐

  1. 洛谷P2507 [SCOI2008]配对 题解(dp+贪心)

    洛谷P2507 [SCOI2008]配对 题解(dp+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1299251 链接题目地址:洛谷P2507 [S ...

  2. 洛谷P2312 解方程题解

    洛谷P2312 解方程题解 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) ...

  3. 洛谷P1273 有线电视网 题解

    洛谷P1273 有线电视网 题解 题目链接:P1273 有线电视网 题意: 某收费有线电视网计划转播一场重要的足球比赛.他们的转播网和用户终端构成一棵树状结构,这棵树的根结点位于足球比赛的现场,树叶为 ...

  4. 洛谷P4568 [JLOI2011] 飞行路线 题解

    洛谷P4568 [JLOI2011] 飞行路线 题解 题目链接:P4568 [JLOI2011] 飞行路线 题意: Alice 和 Bob 现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公 ...

  5. 洛谷P3426 [POI2005]SZA-Template 题解

    洛谷P3426 [POI2005]SZA-Template 题解 题目链接:P3426 [POI2005]SZA-Template 题意:你打算在纸上印一串字母. 为了完成这项工作,你决定刻一个印章. ...

  6. 洛谷P1156 垃圾陷阱 题解浅谈刷表法与填表法

    洛谷P1156 垃圾陷阱 题解&浅谈刷表法与填表法 填表法 :就是一般的动态规划,当前点的状态,可以直接用状态方程,根据之前点的状态推导出来. 刷表法:由当前点的状态,更新其他点的状态.需要注 ...

  7. 洛谷P1262 间谍网络题解

    洛谷P1262 间谍网络题解 题目大意 题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果 A 间谍手中掌握着关于 B 间谍的犯罪证据,则称 A 可以揭发 B.有些间谍收受贿赂,只要 ...

  8. 【洛谷P3960】列队题解

    [洛谷P3960]列队题解 题目链接 题意: Sylvia 是一个热爱学习的女孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia 所在的方阵中有 n×m ...

  9. 洛谷P4099 [HEOI2013]SAO 题解

    洛谷P4099 [HEOI2013]SAO 题解 题目链接:P4099 [HEOI2013]SAO 题意: Welcome to SAO ( Strange and Abnormal Online). ...

最新文章

  1. poj 1935(搜索+回溯)
  2. C/C++/动态链接库DLL中函数的调用约定与名称修饰
  3. 初探swift语言的学习笔记十一(performSelector)
  4. haproxy的丰富特性简介
  5. jest忽略如何添加忽略_大多数人忽略的基本家庭维护任务
  6. [EDA] 2.2 简单PLD结构原理-潘松版
  7. 【九】Git 可视化GUI管理工具 - SourceTree
  8. Linux在日志中搜索关键词
  9. idea安装插件及java开发插件推荐
  10. matlab电力模块,基于MATLAB中电力系统模块集(PSB的电力系统仿真研究
  11. 使用ubuntu内置桌面共享:vino,实现远程桌面
  12. linux 中gnu的含义是,GNU是什么意思
  13. python发送qq邮件失败_python发送QQ邮件
  14. 2021刷百度统计关键词的灰产嫌疑人徐某被抓
  15. 屏蔽烦人的百度搜索热点
  16. 用css实现骰子的六个面(flex布局的学习)
  17. 链表-1(链表理论基础、移除链表元素、设计链表翻转链表)
  18. 二级考c语言还是办公软件好,计算机一级是什么水平 计算机一级和二级哪个高?...
  19. C++语言程序设计第五版 - 郑莉(第四章课后习题)
  20. 2022年进口葡萄酒市场分析

热门文章

  1. Java多线程 关闭线程池 shutdown() 、shutdownNow()、awaitTermination()
  2. 贵州电网计算机通信类,贵州电力招聘网:2021南方电网招聘专业知识点(通信类岗位)...
  3. 《白蛇:缘起》非专业影评
  4. 买电脑时,独显和集显到底有什么区别呢?
  5. Ubuntu一马当先,冲锋在前
  6. iOS 什么时候调用dealloc
  7. Element UI 使用 el-carousel 焦点图
  8. 大连海洋大学计算机科学与技术,2019大连海洋大学专业排名
  9. iOS APP 逆向安全杂谈之二
  10. 使用DSBridge 显示网页白屏问题