混合牛奶(洛谷-P1208)
題目描述
由于乳制品產(chǎn)業(yè)利潤很低,所以降低原材料(牛奶)價格就變得十分重要。幫助Marry乳業(yè)找到最優(yōu)的牛奶采購方案。
Marry乳業(yè)從一些奶農(nóng)手中采購牛奶,并且每一位奶農(nóng)為乳制品加工企業(yè)提供的價格是不同的。此外,就像每頭奶牛每天只能擠出固定數(shù)量的奶,每位奶農(nóng)每天能提供的牛奶數(shù)量是一定的。每天Marry乳業(yè)可以從奶農(nóng)手中采購到小于或者等于奶農(nóng)最大產(chǎn)量的整數(shù)數(shù)量的牛奶。
給出Marry乳業(yè)每天對牛奶的需求量,還有每位奶農(nóng)提供的牛奶單價和產(chǎn)量。計算采購足夠數(shù)量的牛奶所需的最小花費。
注:每天所有奶農(nóng)的總產(chǎn)量大于Marry乳業(yè)的需求量。
輸入輸出格式
輸入格式:
第 1 行共二個數(shù)值:N,(0<=N<=2,000,000)是需要牛奶的總數(shù);M,(0<= M<=5,000)是提供牛奶的農(nóng)民個數(shù)。
第 2 到 M+1 行:每行二個整數(shù):Pi 和 Ai。
Pi(0<= Pi<=1,000) 是農(nóng)民 i 的牛奶的單價。
Ai(0 <= Ai <= 2,000,000)是農(nóng)民 i 一天能賣給Marry的牛奶制造公司的牛奶數(shù)量。
輸出格式:
單獨的一行包含單獨的一個整數(shù),表示Marry的牛奶制造公司拿到所需的牛奶所要的最小費用。
輸入輸出樣例
輸入樣例#1:
100 5
5 20
9 40
3 10
8 80
6 30
輸出樣例#1:
630
思路:先用結(jié)構(gòu)體輸入數(shù)據(jù),再按照奶農(nóng)提供的牛奶單價排序,然后用循環(huán),用需要的牛奶總量減去奶農(nóng)的牛奶,每一次循環(huán)都要加上奶農(nóng)牛奶單價*牛奶數(shù)量,一直循環(huán)下去,就可以得出結(jié)果
源代碼
#include<iostream> #include<algorithm> using namespace std; struct result{//結(jié)構(gòu)體int price;int num; }milk[5000]; bool cmp(result a,result b){//排序因子return a.price<b.price; } int main() {int n,m;int i;int sum_price=0,sum_num=0,remain;cin>>n>>m;for(i=0;i<m;i++) {cin>>milk[i].price>>milk[i].num;}//數(shù)據(jù)輸入sort(milk,milk+m,cmp);//升序排序for(i=0;i<m;i++){sum_num+=milk[i].num;//計算數(shù)量sum_price+=milk[i].price*milk[i].num;//計算總價格if(sum_num>=n) break;//當(dāng)前數(shù)量大于等于所需數(shù)量時,終止}if(sum_num==n)//供給數(shù)量與所需數(shù)量相同時cout<<sum_price<<endl;else//供給數(shù)量大于所需數(shù)量相同時{remain=sum_num-n;//多余需求量的數(shù)量sum_price-=remain*milk[i].price;//原價格減去多余數(shù)量的價格cout<<sum_price<<endl;}return 0; }?
新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎!定制產(chǎn)品紅包拿不停!總結(jié)
以上是生活随笔為你收集整理的混合牛奶(洛谷-P1208)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Building Roads(POJ-3
- 下一篇: 开心的金明(洛谷-P1060)