HDU 4415 Assassin’s Creed
来源:互联网 发布:.me域名注册 编辑:程序博客网 时间:2024/05/16 06:30
Assassin’s Creed
Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 976 Accepted Submission(s): 276
Problem Description
Ezio Auditore is a great master as an assassin. Now he has prowled in the enemies’ base successfully. He finds that the only weapon he can use is his cuff sword and the sword has durability m. There are n enemies he wants to kill and killing each enemy needs Ai durability. Every time Ezio kills an enemy he can use the enemy’s sword to kill any other Bi enemies without wasting his cuff sword’s durability. Then the enemy’s sword will break. As a master, Ezio always want to do things perfectly. He decides to kill as many enemies as he can using the minimum durability cost.
Input
The first line contains an integer T, the number of test cases.
For each test case:
The first line contains two integers, above mentioned n and m (1<=n<=10^5, 1<=m<=10^9).
Next n lines, each line contains two integers Ai, Bi. (0<=Ai<=10^9, 0<=Bi<=10).
For each test case:
The first line contains two integers, above mentioned n and m (1<=n<=10^5, 1<=m<=10^9).
Next n lines, each line contains two integers Ai, Bi. (0<=Ai<=10^9, 0<=Bi<=10).
Output
For each case, output "Case X: " (X is the case number starting from 1) followed by the number of the enemies Ezio can kill and the minimum durability cost.
Sample Input
23 54 15 17 72 12 24 0
Sample Output
Case 1: 3 4Case 2: 0 0
Source
2012 ACM/ICPC Asia Regional Hangzhou Online
Recommend
liuyiding
想到贪心了,但是没有想到居然是这样贪心啊。 看着别人的解题报告做的,有的地方理解的还是不够透彻
http://blog.csdn.net/goomaple/article/details/8016328
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>struct num{ int val1,val2;}a[1100000];int cmp(const void *e,const void *f){ struct num *p1=(struct num *)e; struct num *p2=(struct num *)f; if(p1->val1!=p2->val1) { return p1->val1 - p2->val1; } return p1->val2 - p2->val2;}int main(){ int i,j,n,m,s,t,T,flag,nn,mm,sum; int res1,res2,res3,res4; t=1; scanf("%d",&T); while(T--) { scanf("%d %d",&n,&m); res1=res2=res3=res4=0; for(i=0;i<=n-1;i++) { scanf("%d %d",&a[i].val1,&a[i].val2); } qsort(a,n,sizeof(a[0]),cmp); mm=m; for(i=0;i<=n-1;i++) { if(mm>=a[i].val1) { res1++; res2+=a[i].val1; mm-=a[i].val1; } } for(i=0;i<=n-1;i++) { if(a[i].val2) { break; } } if(i!=n&&a[i].val1<=m) { res4=a[i].val1; m-=a[i].val1; flag=i; for(j=i,sum=0;j<=n-1;j++) { sum+=a[j].val2; } if(sum>=n) { printf("Case %d: %d %d\n",t++,n,res4); continue; } res3=sum+1; nn=n-res3; for(i=0;i<=nn-1;i++) { if(m>=a[i].val1&&flag!=i) { res3++; m-=a[i].val1; res4+=a[i].val1; }else if(flag==i) { nn++; } } } if(res1>res3) { printf("Case %d: %d %d\n",t++,res1,res2); }else if(res1==res3) { if(res2<res4) { printf("Case %d: %d %d\n",t++,res1,res2); }else { printf("Case %d: %d %d\n",t++,res3,res4); } }else { printf("Case %d: %d %d\n",t++,res3,res4); } } return 0;}
- hdu-4415-Assassin’s Creed
- hdu 4415 Assassin’s Creed
- HDU 4415 Assassin’s Creed
- hdu 4415 Assassin’s Creed
- HDU 4415 Assassin’s Creed
- hdu 4415 Assassin’s Creed 贪心
- HDU 4415 Assassin’s Creed(贪心)
- HDU 4415 Assassin’s Creed(贪心)
- [贪心] hdu 4415 Assassin’s Creed
- HDU 4415 Assassin's Creed(贪心)
- HDU 4415 Assassin’s Creed 苦逼的贪心
- hdu 4415 Assassin’s Creed 贪心 解题报告
- hdoj 4415 Assassin’s Creed 【贪心】
- hdu4415 Assassin’s Creed
- hdu4415 Assassin’s Creed
- F - Assassin’s Creed
- hdu4415 Assassin's Creed
- hdu4415 Assassin’s Creed
- DirectX 3D_基础之模型表示 顶点格式 三角形 索引 虚拟摄像机 投影窗口 绘制流水线 局部坐标系 观察坐标系 世界坐标系 背面消隐 光照 裁剪 投影 视口变换 光栅化
- 趋势科技几道笔试题
- 字符识别Google开源Tesseract-ocr的DLL调用方法
- HTML和CSS常见应用
- 正则表达式
- HDU 4415 Assassin’s Creed
- 操作系统的发展
- Linux常用命令之grep
- 好东西,JEECG 是一款基于代码生成器的J2EE智能开发平台!
- 关于a++和++a
- Python中的lambda
- eclipse如何导入没有.project文件的Android项目
- 小妞会装机 -- 一个装机软件的开发笔记(七)
- Java打印charArray.toString()