日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NYOJ 248 BUYING FEED (贪心)

發布時間:2025/3/16 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NYOJ 248 BUYING FEED (贪心) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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元。求最小花費是多少。

分析:這道題可以用貪心來做。先求出這個人在每個商店買1磅到達E點時的花費,把它作為這個商店的單價,那么我們在買時就不用考慮這個商店與E點的距離,只需要貪心選擇單價小的即可。

#include<stdio.h> #include<algorithm> using namespace std; struct store {int pos; //商店位置int f; //最多賣的數量int c; //處理前的單價int s; //處理后的單價 }a[105];bool comp(store a1, store a2) {return a1.s < a2.s; //優先選擇單價小的 }int main() {int k, L, n, i, j, sum, T;scanf("%d",&T);while(T--){scanf("%d%d%d",&k,&L,&n);for(i = 0; i < n; i++){scanf("%d%d%d",&a[i].pos, &a[i].f, &a[i].c);a[i].s = L - a[i].pos + a[i].c; //把這個商店到終點的距離和原來的單價一起作為新的單價}sort(a, a+n,comp);int sum = 0, cnt = 0;for(i = 0; i < n; i++){if(cnt < k){if(cnt + a[i].f <= k){sum += a[i].f * a[i].s;cnt += a[i].f;if(cnt == k)break;}else{sum += (k - cnt) * a[i].s;break;}}}printf("%d\n",sum);}return 0; }

總結

以上是生活随笔為你收集整理的NYOJ 248 BUYING FEED (贪心)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。