Problem H
来源:互联网 发布:windows 10 mobile apk 编辑:程序博客网 时间:2024/06/10 20:06
Problem H
Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 85 Accepted Submission(s) : 5
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
在打游戏的时候,同时碰到多只野怪需要怎么样的攻击顺序攻击才能使所受到的总伤害最少呢?假设玩家的攻击力固定,野怪的攻击力也固定,不会存在暴击的情况,同时没有范围伤害一次只能攻击一只野怪,人物和野怪每秒只能攻击一次。野怪被打死了不能继续攻击,但是在被打死的最后一秒钟还是可以输出伤害的。现在告诉你玩家的攻击力,以及每只野怪的血量和攻击力。请你计算玩家最小承受伤害。输出玩家最小承受伤害以及攻击顺序。
ps:如果最小承受伤害有多种方案,那么输出编号字典顺最小的一组方案。
ps:如果最小承受伤害有多种方案,那么输出编号字典顺最小的一组方案。
Input
输入第一个数t(t<=10)表示测试用例数。接下来每个用例第一行有两个整数p,n(n<=15),分别表示玩家攻击力和野怪的数目,然后跟着的n行每行有两个整数组成分别表示标号从1-n的野怪的血量和攻击力。
Output
对于每一个用例第一行是所受最小伤害数,接下来n行是攻击野怪的顺序。
Sample Input
25 34 69 613 46 432 32 413 315 6
Sample Output
48123882431
#include<cstdio>#include<iostream>#include<algorithm>#include<string>#include<cmath>#include<cstring>using namespace std;struct A{ int x,g,num; double bz;}f[20];bool cmp(A p,A q){ if(p.bz==q.bz) return q.num<p.num; return p.bz>q.bz;}int main(){ int t; scanf("%d",&t); while(t--) { int n,m; scanf("%d %d",&n,&m); for(int i=0;i<m;i++) { scanf("%d %d",&f[i].x,&f[i].g); f[i].num=i+1; f[i].bz=f[i].g*1.0/f[i].x; } sort(f,f+m,cmp); int sum=0,ans=0; int s=0; for(int i=0;i<m;i++) { s=s+(int)ceil(f[i].x*1.0/n); sum+=s*f[i].g; } printf("%d\n",sum); for(int i=0;i<m;i++) printf("%d\n",f[i].num); } return 0;}
阅读全文
0 0
- Problem H
- Problem H
- Problem H
- Problem H
- Problem H
- Problem H
- Problem H
- problem h
- Problem-H
- Problem H
- Problem H
- Problem-H
- Problem H
- Problem H
- Problem H
- Problem H: 筛选素数
- Problem H: 魔方阵
- Problem H: 悦动达人
- centos安装redis
- 最短路径——Floyd
- java SSM 框架 代码生成器 websocket即时通讯 shiro redis 多数据源 后台框架源码
- c3p0参数的说明以及整合spring使用
- K&R《C程序语言学习》p12:统计输入的字符数
- Problem H
- 利用形态相近的字符进行钓鱼欺骗
- 设计模式---单例模式
- js prototype
- kubernetst
- CSS选择器总结
- 统计学 假设检验的完整步骤
- JFreeChart java 图形绘制
- Redis中的批量删除数据库中的Key