NYOJ248-BUYING FEED
来源:互联网 发布:ubuntu获取管理员权限 编辑:程序博客网 时间:2024/06/05 18:51
BUYING FEED
时间限制:3000 ms | 内存限制:65535 KB
难度:4
描述
Farmer John needs to travel to town to pick up K (1 <= K <= 100)pounds of feed. Driving D miles with K pounds of feed in his truck costs D*K cents.
The county feed lot has N (1 <= N<= 100) stores (conveniently numbered 1..N) that sell feed. Each store is located on a segment of the X axis whose length is E (1 <= E <= 350). Store i is at location X_i (0 < X_i < E) on the number line and can sell John as much as F_i (1 <= F_i <= 100) pounds of feed at a cost of C_i (1 <= C_i <= 1,000,000) cents per pound.
Amazingly, a given point on the X axis might have more than one store.
Farmer John starts at location 0 on this number line and can drive only in the positive direction, ultimately arriving at location E, with at least K pounds of feed. He can stop at any of the feed stores along the way and buy any amount of feed up to the the store's limit. What is the minimum amount Farmer John has to pay to buy and transport the K pounds of feed? Farmer John
knows there is a solution. Consider a sample where Farmer John needs two pounds of feed from three stores (locations: 1, 3, and 4) on a number line whose range is 0..5:
0 1 2 3 4 5
---------------------------------
1 1 1 Available pounds of feed
1 2 2 Cents per pound
It is best for John to buy one pound of feed from both the second and third stores. He must pay two cents to buy each pound of feed for a total cost of 4. When John travels from 3 to 4 he is moving 1 unit of length and he has 1 pound of feed so he must pay1*1 = 1 cents.
When John travels from 4 to 5 heis moving one unit and he has 2 pounds of feed so he must pay 1*2 = 2 cents. The total cost is 4+1+2 = 7 cents.
输入
The first line of input contains a number c giving the number of cases that follow
There are multi test cases ending with EOF.
Each case starts with a line containing three space-separated integers: K, E, and N
Then N lines follow :every line contains three space-separated integers: Xi Fi Ci
输出
For each case,Output A single integer that is the minimum cost for FJ to buy and transport the feed
样例输入
1
2 5 3
3 1 2
4 1 2
1 1 1
样例输出
7
来源
第三届河南省程序设计大赛
题意:一条数轴上有n个商店,第i个商店在Xi的位置,最多可以卖Fi磅feed,每磅Ci元。一个人从起点0开始,终点为E,当他到达E点时,至少要买K磅feed,带着1磅feed每前进一个单位,就要额外花费1元。求最小花费是多少。
思路:贪心算法,将每一个坐标运送一磅feed到终点E的花费算出来,作为商店的一个属性(姑且叫它“单价”),之后按照这个“单价”从小到大排序,每次取最大值的feed并计算花费,直至K=0,之后输出结果即为最小值。
注意输入格式和memset清0(不清0下次排序会出错)
时间限制:3000 ms | 内存限制:65535 KB
难度:4
描述
Farmer John needs to travel to town to pick up K (1 <= K <= 100)pounds of feed. Driving D miles with K pounds of feed in his truck costs D*K cents.
The county feed lot has N (1 <= N<= 100) stores (conveniently numbered 1..N) that sell feed. Each store is located on a segment of the X axis whose length is E (1 <= E <= 350). Store i is at location X_i (0 < X_i < E) on the number line and can sell John as much as F_i (1 <= F_i <= 100) pounds of feed at a cost of C_i (1 <= C_i <= 1,000,000) cents per pound.
Amazingly, a given point on the X axis might have more than one store.
Farmer John starts at location 0 on this number line and can drive only in the positive direction, ultimately arriving at location E, with at least K pounds of feed. He can stop at any of the feed stores along the way and buy any amount of feed up to the the store's limit. What is the minimum amount Farmer John has to pay to buy and transport the K pounds of feed? Farmer John
knows there is a solution. Consider a sample where Farmer John needs two pounds of feed from three stores (locations: 1, 3, and 4) on a number line whose range is 0..5:
0 1 2 3 4 5
---------------------------------
1 1 1 Available pounds of feed
1 2 2 Cents per pound
It is best for John to buy one pound of feed from both the second and third stores. He must pay two cents to buy each pound of feed for a total cost of 4. When John travels from 3 to 4 he is moving 1 unit of length and he has 1 pound of feed so he must pay1*1 = 1 cents.
When John travels from 4 to 5 heis moving one unit and he has 2 pounds of feed so he must pay 1*2 = 2 cents. The total cost is 4+1+2 = 7 cents.
输入
The first line of input contains a number c giving the number of cases that follow
There are multi test cases ending with EOF.
Each case starts with a line containing three space-separated integers: K, E, and N
Then N lines follow :every line contains three space-separated integers: Xi Fi Ci
输出
For each case,Output A single integer that is the minimum cost for FJ to buy and transport the feed
样例输入
1
2 5 3
3 1 2
4 1 2
1 1 1
样例输出
7
来源
第三届河南省程序设计大赛
题意:一条数轴上有n个商店,第i个商店在Xi的位置,最多可以卖Fi磅feed,每磅Ci元。一个人从起点0开始,终点为E,当他到达E点时,至少要买K磅feed,带着1磅feed每前进一个单位,就要额外花费1元。求最小花费是多少。
思路:贪心算法,将每一个坐标运送一磅feed到终点E的花费算出来,作为商店的一个属性(姑且叫它“单价”),之后按照这个“单价”从小到大排序,每次取最大值的feed并计算花费,直至K=0,之后输出结果即为最小值。
注意输入格式和memset清0(不清0下次排序会出错)
AC代码:
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;struct node{ int num,weight,money,ever;}per[1500];int cmp(node x,node y){ if(x.ever!=y.ever) return x.ever<y.ever;}int main(){ int i,j,n,K,E,N,sum; while(scanf("%d",&n)!=EOF) { while(n--) { memset(per,0,sizeof(per)); scanf("%d %d %d",&K,&E,&N); for(i=0;i<N;i++) { scanf("%d %d %d",&per[i].num,&per[i].weight,&per[i].money); per[i].ever=per[i].money+(E-per[i].num); } sort(per,per+N,cmp); i=0;sum=0; while(K!=0) { if(K-per[i].weight>=0) { K-=per[i].weight; sum+=per[i].weight*per[i].ever; } else { sum+=K*per[i].ever; K=0; } i++; } printf("%d\n",sum); } } return 0;}
0 0
- NYOJ248-BUYING FEED
- 题解 NYOJ248 BUYING FEED
- BUYING FEED(NYOJ248)
- nyoj248 BUYING FEED
- nyoj248 BUYING FEED(贪心orDP)
- BUYING FEED
- BUYING FEED
- BUYING FEED
- NYOJ 248 BUYING FEED
- BUYING FEED nyist248
- NYOJ 248 BUYING FEED
- NYOJ-248 BUYING FEED
- nyoj 248 BUYING FEED
- NYOJ 248 BUYING FEED
- 第三届省赛题 BUYING FEED
- BUYING FEED 典型的贪心
- BNUOJ 4151 Buying Feed II
- nyoj 248 BUYING FEED 【贪心】
- 博客搬家了
- Struts2 的国际化实现
- hello world
- 基于Linux C的socket抓包程序和Package分析 (二)
- Yii中查询标准criteria理解
- NYOJ248-BUYING FEED
- Android WifiDisplay分析一:相关Service的启动
- leetcode: Search Insert Position
- Android WifiDisplay分析二:Wifi display连接过程
- 条款22:将成员变量声明为private
- memset,memcpy实现
- Android WifiDisplay分析三:RTSP交互以及数据传输
- rdgdhth当天然后突然发觉的一条街一条街一条街
- 2014百度联盟峰会:预计分成70亿,技术创新引领产业变革