FJNU 1156 Fat Brother’s Gorehowl(胖哥的血吼)
FJNU 1156 Fat Brother’s Gorehowl(胖哥的血吼)
Time Limit: 1000MS Memory Limit: 257792K
|
【Description】 |
【题目描述】 |
|
Fat Brother is a Great warrior(战士) and he has a powerful weapons named “Gorehowl”. Firstly it can cause 7 damage points to the other side, but it will decrease 1 damage points after one attack. One day, Fat Brother meet N monsters, but he only take his “Gorehowl”. Each monster has health points. When Fat Brother attacked a monster, the monster’s health points will decrease damage points of “Gorehowl”. If a monster’s health points less than or equal to zero, it die. Fat Brother must kill all monsters or he can’t get away from here. If he can kill all monster, he want to know least of times he should attack. If he can’t, he will choose go die. |
胖哥是一位信仰战,并且他拥有把名叫“血吼”的强力武器。一开始可以对一个目标造成7点伤害,然后每次攻击后减少1点攻击力。 一天,胖哥偶遇N只随从,但是他只带了“血吼”。 每只随从都有一定的生命值。当胖哥攻击一只随从后,这只随从的生命值会被减去“血吼”的攻击力。如果一只随从的生命值小等于0,即死亡。胖哥解决所有随从否则无法脱身。如果胖哥能够清场,他想知道最少的攻击次数。如果不行,他选择死亡。 |
|
【Input】 |
【输入】 |
|
There are multiple test cases. The first line of input contains an integer T (T <= 50) indicating the number of test cases. For each test case: The first line contains one integer N (1 <= N <= 100000) means number of monsters. The next line contains N number Hi (1<= Hi <= 10) means monster’s health points. |
多组测试用例。 第一行是一个整数T(T <= 50)表示测试用例的数量。对于每个测试用例: 第一行是一个整数N(1 <= N <= 100000)表示随从的数量。 下一行有N个数Hi(1<= Hi <= 10),表示随从的生命值。 |
|
【Output】 |
【输出】 |
|
If Fat Brother can kill all monsters, output a number means least of times Fat Brother should attack. Otherwise output “Fat Brother choose go die” |
如果胖哥能够消灭所有随从,输出他最少的攻击次数,否则输出“Fat Brother choose go die” |
|
【Sample Input - 输入样例】 |
【Sample Output - 输出样例】 |
|
3 2 12 6 1 28 1 29 |
3 7 Fat Brother choose go die |
|
【Hint】 |
【提示】 |
|
First case, First attack first monster and it’s health points decrease to 5. Second attack second monster and it’s health points decrease to 0, it will die. Third attack first monster and it’s health points decrease to 0, it will die. All monster die! Second case, attack first monster 7 times, and sum of damage points is 7 + 6 + 5 + 4 + 3 + 2 + 1 = 28, kill all monster. Third case, Fat Brother can’t kill first monster, so he will choose go die. The test sample just explain problem, you can think the really data is accord with the title's description |
第一个样例, 第一次攻击第一只随从使其生命值归5。第二次攻击第二只随从使其生命值归0,把它消灭。第三次攻击第一只随从使其生命值归0,把它消灭。所有随从阵亡。 第二个样例, 攻击第一只随从7次,攻击力的和为7 + 6 + 5 + 4 + 3 + 2 + 1 = 28,所有随从阵亡。 第三个样例, 胖哥无法解决第一只随从,因此他选择死亡。 测试用例仅供说明,你可认为实际数据都符合题目描述。 |
【题解】
实际需要处理的数据量不大,暴力搜索应该没问题,不过出于看(qiang)得(po)爽(zheng),就用贪心了。
一共只能攻击7次,分别是 1 2 3 4 5 6 7
那么先在读取的时候剪个枝,N > 7或 Hid的和 > 28,直接选择死亡。
然后我们把血吼每次的攻击力离散化,变成你每次都能造成1~7点伤害,但是造成的伤害不能重复。
为了尽快砍死随从,可用攻击力 = 当前随从生命值 的情况最优先使用。
其次若没有恰好相等的情况,为了减少浪费,则用剩余的最高可用攻击力砍生命值最高的随从。
【代码 C++】
#include<cstdio>
#include <cstring>
#include <queue>
std::priority_queue<int, std::vector<int> > data, wait;
bool us[];
int n;
bool read(){
scanf("%d", &n);
int i, j, s;
if (n > ){
for (i = ; i < n; ++i) scanf("%d", &j);
return ;
}
while (!data.empty()) data.pop();
memset(us, , sizeof(us));
for (i = s = ; i < n; ++i){
scanf("%d", &j); s += j;
if (j <= && !us[j]) ++us[j];
else data.push(j);
}
if (s>) return ;
while (!wait.empty()) wait.pop();
for (i = ; i <= ; ++i) if (!us[i]) wait.push(i);
return ;
}
int main(){
int t, i, j, d, w;
while (~scanf("%d", &t)){
while (t--){
if (read()){
while (!wait.empty() && !data.empty()){
w = wait.top(); wait.pop(); ++us[w];
d = data.top(); data.pop(); d -= w;
if (d > ){
if (d <= && !us[d]) ++us[d];
else data.push(d);
}
while (!wait.empty() && us[wait.top()]) wait.pop();
}
if (data.empty()){
for (i = j = ; i <= ; ++i) if (us[i]) ++j;
printf("%d\n", j);
}
else puts("Fat Brother choose go die");
}
else puts("Fat Brother choose go die");
}
}
return ;
}
FJNU 1156 Fat Brother’s Gorehowl(胖哥的血吼)的更多相关文章
- FJNU 1154 Fat Brother And His Love(胖哥与女神)
FJNU 1154 Fat Brother And His Love(胖哥与女神) Time Limit: 2000MS Memory Limit: 257792K [Description] [ ...
- FJNU 1153 Fat Brother And XOR(胖哥与异或)
FJNU 1153 Fat Brother And XOR(胖哥与异或) Time Limit: 1000MS Memory Limit: 257792K [Description] [题目描述] ...
- FJNU 1155 Fat Brother’s prediction(胖哥的预言)
FJNU 1155 Fat Brother’s prediction(胖哥的预言) Time Limit: 1000MS Memory Limit: 257792K [Description] [ ...
- FJNU 1152 Fat Brother And Integer(胖哥与整数)
FJNU 1152 Fat Brother And Integer(胖哥与整数) Time Limit: 1000MS Memory Limit: 257792K [Description] [题 ...
- FJNU 1151 Fat Brother And Geometry(胖哥与几何)
FJNU 1151 Fat Brother And Geometry(胖哥与几何) Time Limit: 1000MS Memory Limit: 257792K [Description] [ ...
- FJNU 1157 Fat Brother’s ruozhi magic(胖哥的弱智术)
FJNU 1157 Fat Brother’s ruozhi magic(胖哥的弱智术) Time Limit: 1000MS Memory Limit: 257792K [Description ...
- FJNU 1159 Fat Brother’s new way(胖哥的新姿势)
FJNU 1159 Fat Brother’s new way(胖哥的新姿势) Time Limit: 1000MS Memory Limit: 257792K [Description] [题目 ...
- HDU 4637 Rain on your Fat brother 线段与半圆和线段交 简单题
题意: 应该不难读懂. 做法: 我们可以把雨滴看做静止不动,然后maze(这题的那个人)就是往左上方运动就可以了,计算出maze能跑到的最远的点,然后就是求起点和终点所构成的线段与每个雨滴交的时间,注 ...
- 大数据的胖哥的方式(9)- 金融业数据仓库的逻辑模型FS-LDM
介绍: 大数据是不是海市蜃楼,来自小橡子只是意淫奥克斯,大数据的发展,而且要从头开始,基于大数据建设国家.项目-level数据中心行业将越来越多,大数据仅供技术,而非溶液,临数据组织模式,数据逻辑模式 ...
随机推荐
- 《REWORK》启示录 发出你的心声——程序员与身体
Sound Like You 所谓的标题在这里并不是为了吸引眼球,不过也是为了吸引眼球,只是出发点已经不一样了.这是一篇适合给程序员看的关于健康的文章,也许你认识李开复也可以给他看看,上过养生过,觉得 ...
- api-ms-win-crt-runtimel1-1-0.dll缺失的解决方案
api-ms-win-crt-runtime就是MFC的运行时环境的库, 在windows上编译也是用微软的visual studio C++编译的软件, 底层也会用到微软提供的C++库和runtim ...
- Bootstrap:弹出框和提示框效果以及代码展示
前言:对于Web开发人员,弹出框和提示框的使用肯定不会陌生,比如常见的表格新增和编辑功能,一般常见的主要有两种处理方式:行内编辑和弹出框编辑.在增加用户体验方面,弹出框和提示框起着重要的作用,如果你的 ...
- JavaEE基础(九)
1.面向对象(多态的概述及其代码体现) A:多态(polymorphic)概述 事物存在的多种形态 B:多态前提 a:要有继承关系. b:要有方法重写. c:要有父类引用指向子类对象. C:案例演示 ...
- 转Class.forName()用法详解
主要功能 Class.forName(xxx.xx.xx)返回的是一个类 Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类, 也就是说JVM会执行该类的静态代码段 ...
- C#:WPF绘制问题
1.问题描述:切换画笔后,鼠标呈现画笔,但绘制界面需要点击后才能绘制,体验比较差 注:如果将切换为画笔或橡皮擦的功能放在二级菜单中则无次问题 解决方法(大体如此): 1)在第三方中,先创建完绘制画面和 ...
- 每日一九度之 题目1030:毕业bg
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2046 解决:894 题目描述: 每年毕业的季节都会有大量毕业生发起狂欢,好朋友们相约吃散伙饭,网络上称为“bg”.参加不同团体的b ...
- Android调试常用的工具简单介绍
配置Android环境的时候,我们需要安装sdk.在sdk的目录下: platform-tools 目录下的adb tool下的: ddms.bat adb :可以cd 当前目录,然后使用相应的命令, ...
- hdu4727 The Number Off of FFF
理解错题意,wa了几次. 我一开始的理解忽略了实际背景,认为错报是绝对的,不依赖于其左边的人. 而实际上某士兵报数的对错取决且仅取决于他所报的数与其左邻所报的数. 所以假设第一个人没有报错,则其后必有 ...
- Argus
Argus Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 10186 Accepted: 4801 Description A ...