1 条题解
-
0
自动搬运
来自洛谷,原作者为

幽界の冥神
当太阳,再次照亮天空;请记得,要叫我一声啊...搬运于
2025-08-24 21:39:42,当前版本为作者最后更新于2017-10-09 21:52:37,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
#include "cstdio" #include "algorithm" using namespace std; struct food{int val,num;}f[102];//num为这个商店的存货,val为在这个商店买一份食物的价钱 int number,s,n,ans=0; bool cmp(food a,food b){return a.val<b.val;}//从小到大排序 int Min(int a,int b){return a<b?a:b;} int main(){ scanf("%d%d%d",&number,&s,&n);//number为总共要买的食物,s为总路程,n为商店数 for(int i=1,a,b;i<=n;i++){ scanf("%d%d%d",&a,&f[i].num ,&b); f[i].val=s-a+b;//在这个商店买一份食物的价钱 } sort(f+1,f+1+n,cmp);//排序,取最小值 for(int i=1;i<=n&&number>0;i++){ ans+=Min(number,f[i].num)*f[i].val;//每到一个商店就取光光 number-=f[i].num;//剩下需要买的食物 } printf("%d",ans);//输出 return 0; }个人认为这是比较简短的代码了,缩进不大好看,见谅。。。 一般贪心必将配合排序(至少我做的题目是这样的)不排序的贪心很可能有问题。。。
基本就是这样了,注释应该还蛮详细的
- 1
信息
- ID
- 1653
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者