题解 P2616 【[USACO10JAN]购买饲料II Buying Feed, II】
一个大贪心……
记录每个货物的价格为(m-t)*c,然后贪心……
#include<cstdio>
#include<algorithm>
using namespace std;
struct shu {int jia,num;}a[505];//jia 为价格 ,num为数量
int k,m,n,t,c,ans;
int compare(shu x,shu y)
{
return x.jia<y.jia;
}
int main()
{
scanf("%d%d%d",&k,&m,&n);
for (int i=1;i<=n;i++)
{scanf("%d%d%d",&t,&a[i].num,&c);a[i].jia=(m-t)+c;}//预处理
sort(a+1,a+n+1,compare);//排序找最小
for (int i=1;i<=n;i++)
{ans+=min(k,a[i].num)*a[i].jia;
k-=a[i].num;
if (k<=0) break;//取最小值
}
printf("%d",ans);
}