话说上回讲到海东集团面临内外交困。公司的元老也仅仅剩下XHD夫妇二人了。显然。作为多年拼搏的商人,XHD不会坐以待毙的。
只是虽然宝贝的种类不少,可是每种宝贝的量并不多,当然。每种宝贝单位体积的价格也不一样。为了拯救HDU,如今请你帮忙尽快计算出来XHD最多能带回多少价值的宝贝?(如果宝贝能够切割,切割后的价值和相应的体积成正比) |
Input
输入包括多个測试实例,每一个实例的第一行是两个整数v和n(v,n<100),分别表示口袋的容量和宝贝的种类,接着的n行每行包括2个整数pi和mi(0<pi,mi<10)。分别表示某种宝贝的单位价格和相应的体积,v为0的时候结束输入。
|
Output
对于每一个測试实例,请输出XHD最多能取回多少价值的宝贝。每一个实例的输出占一行。
|
Sample Input
2 2 3 1 2 3 0 题目挺简单的一个贪心的题。
#include<iostream> #include<cstdio> #include<iostream> #include<algorithm> using namespace std; int sum; struct hdu { int x; int y; }k[1001]; int cmp(hdu a,hdu b) { return a.x>b.x;//刚開始我以为是return a.(x/y)>b.(x/y).后面才知道这是给出来的本来就是一个单位体积。 } int main() { int m,n,i,j,l; while(scanf("%d",&m)!=EOF&&m!=0) { scanf("%d",&n);//不知道是不是坑点啊 sum=0; for(i=0;i<n;i++) { scanf("%d %d",&k[i].x,&k[i].y); } sort(k,k+n,cmp); // for(i=0;i<n;i++) //{ // cout<<k[i].x<<" "<<k[i].y<<endl; //} for(i=0;i<n;i++) {if(m>=k[i].y){ m-=k[i].y; sum+=k[i].x*k[i].y; } else { sum+=k[i].x*m; break; } } cout<<sum<<endl; } return 0; } |
Sample Output
5 经过锦囊相助,HDU会脱离危机吗? 欲知后事怎样,且听下回分解—— |
Author
lcy
|
Source
ACM程序设计_期末考试(时间已定!
!) 题目出得挺坑的啊,然后题目应该是出错了,我感觉是这种
|
Saving HDU hdu
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Saving HDU
Problem Description话说上回讲到海东集团面临内外交
#include Java i++ -
HDOJ2111(Saving HDU)(贪心)
Saving
#include java i++ -
【杭电】[2111]Saving HDU
本来想着运用动态规划 不过这一题直接排序貌...
#include i++ 动态规划 背包问题 ZOJ -
hdu 3037 Saving Beans(组合数学)
hdu 3037 Saving Beans题目大意:n个数,和不大于m的情况,结果模掉p,p保证
#include lucas定理 i++