hdu - 2111 - Saving HDU
1322 ワード
标题:1つの穴にはn種類の宝物があり、それぞれの宝物にはそれぞれの価値と体積があり、XHDポケットの容量はvで、彼に最大でどれだけの価値を持つことができる宝物(宝物は分割することができる)を聞く.
タイトルリンク:http://acm.hdu.edu.cn/showproblem.php?pid=2111
——>>簡単に欲張りで、順番に並べて、価値の高いものから低いものを取ればいいです.(注意テーマのベイビーボリュームとは、このようなベイビーの総ボリュームを指し、単価はボリュームが1単位のときの価値です)
タイトルリンク:http://acm.hdu.edu.cn/showproblem.php?pid=2111
——>>簡単に欲張りで、順番に並べて、価値の高いものから低いものを取ればいいです.(注意テーマのベイビーボリュームとは、このようなベイビーの総ボリュームを指し、単価はボリュームが1単位のときの価値です)
#include
#include
using namespace std;
const int maxn = 100 + 10;
struct node
{
int p;
int m;
bool operator < (const node& e) const
{
return p > e.p;
}
};
int main()
{
int v, n, i;
while(scanf("%d", &v))
{
if(!v) return 0;
scanf("%d", &n);
node a[maxn];
for(i = 0; i < n; i++)
scanf("%d%d", &a[i].p, &a[i].m);
sort(a, a+n);
int val = 0;
for(i = 0; i < n; i++)
{
if(v > 0 && a[i].m > 0)
{
if(v > a[i].m)
{
v -= a[i].m;
val += a[i].p * a[i].m;
continue;
}
else
{
val += a[i].p * v;
break;
}
}
}
printf("%d
", val);
}
return 0;
}