HDU4310:Hero
2016-04-03 17:03
393 查看
Problem Description
When playing DotA with god-like rivals and pig-like team members, you have to face an embarrassing situation: All your teammates are killed, and you have to fight 1vN.
There are two key attributes for the heroes in the game, health point (HP) and damage per shot (DPS). Your hero has almost infinite HP, but only 1 DPS.
To simplify the problem, we assume the game is turn-based, but not real-time. In each round, you can choose one enemy hero to attack, and his HP will decrease by 1. While at the same time, all the lived enemy heroes will attack you, and your HP will decrease by the sum of their DPS. If one hero's HP fall equal to (or below) zero, he will die after this round, and cannot attack you in the following rounds.
Although your hero is undefeated, you want to choose best strategy to kill all the enemy heroes with minimum HP loss.
[align=left]Input[/align]
The first line of each test case contains the number of enemy heroes N (1 <= N <= 20). Then N lines followed, each contains two integers DPSi and HPi, which are the DPS and HP for each hero. (1 <= DPSi, HPi <= 1000)
[align=left]Output[/align]
Output one line for each test, indicates the minimum HP loss.
[align=left]Sample Input[/align]
1
10 2
2
100 1
1 100
[align=left]Sample Output[/align]
20
201
//英语是硬伤。。。要不是看了别人的题解,我真心不知道原来输入时浮点型呀!!!
//这道题直接给我弄迷糊了。。。
//血量少攻击高的要先消灭,即将所有的敌人根据DPS/HP从大到小排序,如果相等,则按HP从小到大排序。
When playing DotA with god-like rivals and pig-like team members, you have to face an embarrassing situation: All your teammates are killed, and you have to fight 1vN.
There are two key attributes for the heroes in the game, health point (HP) and damage per shot (DPS). Your hero has almost infinite HP, but only 1 DPS.
To simplify the problem, we assume the game is turn-based, but not real-time. In each round, you can choose one enemy hero to attack, and his HP will decrease by 1. While at the same time, all the lived enemy heroes will attack you, and your HP will decrease by the sum of their DPS. If one hero's HP fall equal to (or below) zero, he will die after this round, and cannot attack you in the following rounds.
Although your hero is undefeated, you want to choose best strategy to kill all the enemy heroes with minimum HP loss.
[align=left]Input[/align]
The first line of each test case contains the number of enemy heroes N (1 <= N <= 20). Then N lines followed, each contains two integers DPSi and HPi, which are the DPS and HP for each hero. (1 <= DPSi, HPi <= 1000)
[align=left]Output[/align]
Output one line for each test, indicates the minimum HP loss.
[align=left]Sample Input[/align]
1
10 2
2
100 1
1 100
[align=left]Sample Output[/align]
20
201
//英语是硬伤。。。要不是看了别人的题解,我真心不知道原来输入时浮点型呀!!!
//这道题直接给我弄迷糊了。。。
//血量少攻击高的要先消灭,即将所有的敌人根据DPS/HP从大到小排序,如果相等,则按HP从小到大排序。
#include <iostream> #include <algorithm> using namespace std; struct node { double hp; double dps; double bi; } data[25]; bool cmp(const node &a,const node &b) { if(a.bi>b.bi) return true; else if(a.bi==b.bi) { if(a.dps<b.dps) return true; else return false; } else return false; } int main() { int n; double ans; while(cin>>n) { ans=0; for(int i=0;i<n;i++) { cin>>data[i].hp>>data[i].dps; data[i].bi=data[i].dps/data[i].hp*1.0; } sort(data,data+n,cmp); for(int i=0;i<n;i++) { while(data[i].hp) { for(int j=i;j<n;j++) ans+=data[j].dps; data[i].hp--; } } cout<<ans<<endl; } return 0; }
相关文章推荐
- 状态栏文字来回出现_JS特效代码
- JVM垃圾回收之引用计数法
- NWERC 2012 Foul Play 构造 (uvaLive 6271 )
- Android Camera 使用小结
- 关于Sublime Text3的安装和一些技巧总结
- 01-复杂度2 Maximum Subsequence Sum
- LeetCode:有效变形词(Valid Anagram)
- 1110. Complete Binary Tree (25)
- 面试中十四个可以向主考官提出的问题
- 随笔。。。。。。
- MySQL安装之后没有MySQL数据库的原因
- XML用法实例详解
- CentOS 6.7 禁用 IPV6网络的方法
- leetcode之Ugly Number
- LinuxC高级编程——线程
- Bzoj2648:SJY摆棋子:K-D-Tree
- HTML学习笔记(十三)字符实体
- MySQL通配符过滤
- PHP+新浪微博开放平台+新浪云平台(SAE)
- 有哪些让你相见恨晚的 PPT 制作技术或知识?