NYOJ 248 && BNUOJ 4151 BUYING FEED (贪心)
来源:互联网 发布:成长相册制作软件 编辑:程序博客网 时间:2024/05/17 21:54
【题目链接】click here~~
【题目大意】FJ开车去买K份食物,如果他的车上有X份食物。每走一里就花费X元。FJ的城市是一条线,总共E里路,有E+1个地方,标号0~E。FJ从0开始走,到E结束(不能往回走),要买K份食物。城里有N个商店,每个商店的位置是X_i(一个点上可能有多个商店),有F_i份食物,每份C_i元。问到达E并买K份食物的最小花费。
【解题思路】
把每个站点的物品看成是一件物品,每件物品除了价值之外,还附加了从站点到终点的运费。也就是买1磅到达终点时的花费,把它作为这个商店的单价排序一次,最后选择取花费最少的前k个物品。
代码:
#include <bits/stdc++.h>using namespace std;struct node{ int FI_Count,DI_Value;} shop[102];bool cmp(const node& s1,const node& s2){ return s1.DI_Value<s2.DI_Value;}int main(){ //freopen("1.txt","r",stdin); int T,K,E,N,dist; scanf("%d",&T); while(T--) { int cost=0; scanf("%d%d%d",&K,&E,&N); for(int i=0; i<N; i++) { scanf("%d%d%d",&dist,&shop[i].FI_Count,&shop[i].DI_Value); shop[i].DI_Value+=E-dist;//每个站点的每磅物品看成是一件物品,每件物品除了卖价之外,还附加了从站点到终点的运费 } sort(shop,shop+N,cmp); for(int i=0;i<=K;i++){ if(K>shop[i].FI_Count){//买物品 cost+=shop[i].DI_Value*shop[i].FI_Count; K-=shop[i].FI_Count; } else{//剩余物品不够K件 cost+=shop[i].DI_Value*K; K=0; } } printf("%d\n",cost); } return 0;}
1 0
- NYOJ 248 && BNUOJ 4151 BUYING FEED (贪心)
- NYOJ 248 BUYING FEED (贪心)
- NYOJ 248 BUYING FEED (贪心)
- NYOJ 248 BUYING FEED (贪心)
- nyoj 248 BUYING FEED 【贪心】
- BNUOJ 4151 Buying Feed II
- nyoj 323 BUYING FEED 贪心
- NYOJ 248 BUYING FEED
- NYOJ 248 BUYING FEED
- NYOJ-248 BUYING FEED
- nyoj 248 BUYING FEED
- NYOJ 248 BUYING FEED
- NYOJ-248-BUYING FEED(第三届河南省程序设计大赛E题(贪心))
- nyoj 题目 BUYING FEED 贪心算法
- BUYING FEED(贪心+树状动态规划)
- BUYING FEED 典型的贪心
- nyoj248 BUYING FEED(贪心orDP)
- nyoj 248 BUYING FEED 第三届河南省赛
- python wsgi pep333 中文翻译
- JNI获取android wifi interface name
- 嵌入式软件开发培训笔记——C高级 指针
- 旋转后图片放大变形
- atitit.验证码识别step2------剪贴板ClipBoard copy image图像 attilax总结
- NYOJ 248 && BNUOJ 4151 BUYING FEED (贪心)
- 常用正则表达式
- php 实现同一个账号同时只能一个人登录
- 面试后HR让你等通知的真相
- 第六周 项目4 成员函数、友元函数和一般函数有区别
- 欢迎使用CSDN-markdown编辑器
- C++11多线程——mutex学习
- Python Intro - type range and reshape
- 九度OJ 题目1018