hdu4415 贪心
来源:互联网 发布:网络社会的崛起 编辑:程序博客网 时间:2024/05/16 18:56
http://acm.hdu.edu.cn/showproblem.php?pid=4415
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
/**hdu4415 贪心我考虑少了,就不说什么了……http://m.blog.csdn.net/blog/HELLO_THERE/8016365*/#include <stdio.h>#include <string.h>#include <algorithm>#include <iostream>using namespace std;const int maxn=100005;int a[maxn],b[maxn],temp[maxn];int n,m;int main(){ int T,tt=0; scanf("%d",&T); while(T--) { scanf("%d%d",&n,&m); int k1=0,k2=0,sword=0; for(int i=0;i<n;i++) { int x,y; scanf("%d%d",&x,&y); y==0?(b[k2++]=x):(a[k1++]=x); sword+=y; } sort(a,a+k1); sort(b,b+k2); int cost1=0,num1=0; for(int i=0;i<k2;i++) { if(m-cost1>=b[i]) { cost1+=b[i]; num1++; } else break; } int num2=0,cost2=0; if(m>=a[0]) { if(sword>=n-1) { if(num1<n) { num1=n; cost1=a[0]; } else if(num1==n&&cost1>a[0]) { cost1=a[0]; } printf("Case %d: %d %d\n",++tt,num1,cost1); continue; } int k=n-1-sword; int x=1,y=0,i=0; a[k1]=b[k2]=1000000000; while(i<k) { if(a[x]<b[y]) temp[i]=a[x++]; else temp[i]=b[y++]; i++; } i=0; num2=1+sword; cost2=a[0]; while(i<k&&cost2<=m) { if(num2==n) break; if(m-cost2>=temp[i]) { cost2+=temp[i++]; num2++; } else break; } } if(num2>num1) { num1=num2; cost1=cost2; } else if(num2==num1&&cost2<cost1) { cost1=cost2; } printf("Case %d: %d %d\n",++tt,num1,cost1); } return 0;}
0 0
- hdu4415(贪心)
- hdu4415 贪心
- hdu4415 贪心好题
- 【贪心】 hdu4415 Assassin’s Creed
- hdu4415 Assassin’s Creed (贪心)
- hdu4415
- Assassin’s Creed(hdu4415,贪心)
- hdu4415 Assassin’s Creed
- hdu4415 Assassin’s Creed
- hdu4415 Assassin's Creed
- hdu4415 Assassin’s Creed
- hdu4415 不错的想法题
- 贪心!
- 贪心~
- 贪心
- 贪心
- 贪心
- 贪心
- [JSP Style]空格在Html中的表示方法( 含义)
- hdoj 2552 三足鼎立
- * daemon not running.starting it now on port 5037 * 问题解决
- 杭电 HDU ACM 1393 Weird Clock
- Lowest Common Ancestor of The Two Nodes in a Binary Tree
- hdu4415 贪心
- 配置vim
- 原码, 反码, 补码 详解
- 1
- C++里有趣的(++i)和(i++)
- Apache James 实战之“安装配置”james-3.x
- C语言 编写程序实现字符串拷贝,不允许调用strcpy函数。
- 数组-05. 字符串字母大小写转换(10)
- 19、FileWriter打开清空文件,RandomAccessFile的write方法