USACO Training Section 1.3混合牛奶 Mixing Milk
題目描述
由于乳制品產業(yè)利潤很低,所以降低原材料(牛奶)價格就變得十分重要。幫助Marry乳業(yè)找到最優(yōu)的牛奶采購方案。
Marry乳業(yè)從一些奶農手中采購牛奶,并且每一位奶農為乳制品加工企業(yè)提供的價格是不同的。此外,就像每頭奶牛每天只能擠出固定數(shù)量的奶,每位奶農每天能提供的牛奶數(shù)量是一定的。每天Marry乳業(yè)可以從奶農手中采購到小于或者等于奶農最大產量的整數(shù)數(shù)量的牛奶。
給出Marry乳業(yè)每天對牛奶的需求量,還有每位奶農提供的牛奶單價和產量。計算采購足夠數(shù)量的牛奶所需的最小花費。
注:每天所有奶農的總產量大于Marry乳業(yè)的需求量。
輸入輸出格式
輸入格式:
第 1 行共二個數(shù)值:N,(0<=N<=2,000,000)是需要牛奶的總數(shù);M,(0<= M<=5,000)是提供牛奶的農民個數(shù)。
第 2 到 M+1 行:每行二個整數(shù):Pi 和 Ai。
Pi(0<= Pi<=1,000) 是農民 i 的牛奶的單價。
Ai(0 <= Ai <= 2,000,000)是農民 i 一天能賣給Marry的牛奶制造公司的牛奶數(shù)量。
輸出格式:
單獨的一行包含單獨的一個整數(shù),表示Marry的牛奶制造公司拿到所需的牛奶所要的最小費用。
輸入輸出樣例
輸入樣例#1:
100 5
5 20
9 40
3 10
8 80
6 30
輸出樣例#1:
630
說明
題目翻譯來自NOCOW。
基礎貪心題,按單價貪心即可。
#include<iostream> #include<algorithm> using namespace std; struct obj {int price;int quantity;bool operator <(const obj & a)const{return price<a.price;} }ob[5005]; int main() {int demand, n;long long sum=0,money=0;cin>>demand>>n;for(int i=0;i<n;i++){cin>>ob[i].price>>ob[i].quantity;}sort(ob,ob+n);/* for(int i=0;i<n;i++){cout<<ob[i].quantity<<' '<<ob[i].price<<endl;}*/for(int i=0;i<n;i++){if(sum+ob[i].quantity<demand){sum+=ob[i].quantity;money=money+ob[i].quantity*ob[i].price;}else if(sum+ob[i].quantity==demand){sum+=ob[i].quantity;money=money+ob[i].quantity*ob[i].price;break;}else{money=money+(demand-sum)*ob[i].price;break;}}cout<<money<<endl; } 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結
以上是生活随笔為你收集整理的USACO Training Section 1.3混合牛奶 Mixing Milk的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么累计收益小于持有收益
- 下一篇: 电子三包凭证是什么