hdu4415 Assassin’s Creed (贪心)
2012-09-25 12:41
288 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4415
题目大意:用最少的剑的耐久值来杀死更多的敌人,每杀死一个敌人,可以用敌人的剑来帮你杀死Bi个人
题目大意:用最少的剑的耐久值来杀死更多的敌人,每杀死一个敌人,可以用敌人的剑来帮你杀死Bi个人
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> using namespace std; const int Ni = 100010; struct node { int a,b; bool operator < (const node &aa) const { return a<aa.a; } }arr[Ni]; int main() { int i,n,m,t,k,cs=1; scanf("%d",&t); while(t--) { int cost=0,num=0;k=-1; scanf("%d%d",&n,&m); for(i=0;i<n;i++) scanf("%d%d",&arr[i].a,&arr[i].b); sort(arr,arr+n);//升序排列 for(i=0;i<n;i++) if(arr[i].b>=1)//找到第一个花费最少且能帮助杀掉至少一个敌人 break; if(arr[i].a<=m) { cost+=arr[i].a; k=i; num++; for(i=0;i<n;i++) num+=arr[i].b;//有效至少为1,循环可解决所有能解决的(此时不需要花费耐久值) } if(num>=n) { printf("cs %d: %d %d\n",cs++,n,cost);//说明第一次就可以解决所有敌人了 continue; } for(i=0;i<n&&arr[i].a+cost<=m&&num!=n;i++)//从花费的角度考虑剩下的敌人,num最大为n if(i!=k)//如果k!=-1,去掉第一次考虑过的 { cost+=arr[i].a; num++; } printf("cs %d: %d %d\n",cs++,num,cost); } return 0; }
相关文章推荐
- 【贪心】 hdu4415 Assassin’s Creed
- Assassin’s Creed(hdu4415,贪心)
- ACM学习历程—HDU4415 Assassin’s Creed(贪心)
- HDU 4415 Assassin’s Creed(贪心)
- hdu4415 Assassin’s Creed
- hdu 4415 Assassin’s Creed 贪心
- Assassin’s Creed贪心)
- HDU 4415 Assassin’s Creed(贪心)
- [贪心] hdu 4415 Assassin’s Creed
- HDU4415 Assassin’s Creed
- HDU4415 Assassin’s Creed 2012ACM/ICPC 杭州赛区网络赛 F
- HDU 4415 Assassin’s Creed 苦逼的贪心
- hdoj 4415 Assassin’s Creed 【贪心】
- hdu4415 Assassin’s Creed
- hdu4415 Assassin's Creed
- hdu 4415 Assassin’s Creed 贪心 解题报告
- hdu 4415 Assassin’s Creed 贪心
- HDU-4415 Assassin’s Creed 贪心
- HDU 4415 Assassin’s Creed(贪心)
- hdu4415 Assassin’s Creed