POJ 3040 Allowance
题目大意
作为创纪录的牛奶生产的奖励,农场主约翰决定开始给Bessie奶牛一个小的每周津贴。FJ有一套硬币N种(1≤N≤20)不同的面额,每枚硬币是所有比他小的硬币面值的倍数,例如1美分硬币、5美分硬币、10美分硬币和50美分硬币。使用这些硬币,FJ每周至少给Bessie C(1 <= C <=100000000)美分。请你计算他最多能给Bessie几周
思路
贪心,先把值大于等于c的金币提取出来,直接用。然后再用一些尽可能大的金币逼近c,但不能大于c,然后从最小的金币开始,填满这些金币和c的差值(可以超出),思路还比较好理解。代码细节我注释了
代码
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
struct ST
{
int v;
int cnt;
//long long sum;
};
ST a[39];
int use[39];
int cmp(ST x, ST y)
{
return x.v > y.v;
}
int main()
{
int n, c;
cin >> n >> c;
for(int i = 0; i < n; i++)
cin