洛谷 P1208混合牛奶【贪心】
題目描述
由于乳制品產業利潤很低,所以降低原材料(牛奶)價格就變得十分重要。幫助Marry乳業找到最優的牛奶采購方案。
Marry乳業從一些奶農手中采購牛奶,并且每一位奶農為乳制品加工企業提供的價格是不同的。此外,就像每頭奶牛每天只能擠出固定數量的奶,每位奶農每天能提供的牛奶數量是一定的。每天Marry乳業可以從奶農手中采購到小于或者等于奶農最大產量的整數數量的牛奶。
給出Marry乳業每天對牛奶的需求量,還有每位奶農提供的牛奶單價和產量。計算采購足夠數量的牛奶所需的最小花費。
注:每天所有奶農的總產量大于Marry乳業的需求量。
輸入輸出格式
輸入格式:
?
第 1 行共二個數值:N,(0<=N<=2,000,000)是需要牛奶的總數;M,(0<= M<=5,000)是提供牛奶的農民個數。
第 2 到 M+1 行:每行二個整數:Pi 和 Ai。
Pi(0<= Pi<=1,000) 是農民 i 的牛奶的單價。
Ai(0 <= Ai <= 2,000,000)是農民 i 一天能賣給Marry的牛奶制造公司的牛奶數量。
?
輸出格式:
?
單獨的一行包含單獨的一個整數,表示Marry的牛奶制造公司拿到所需的牛奶所要的最小費用。
?
輸入輸出樣例
輸入樣例#1:?復制 100 5 5 20 9 40 3 10 8 80 6 30 輸出樣例#1:?復制 630說明
題目翻譯來自NOCOW。
USACO Training Section 1.3
?
題意:
每個農民每天產x牛奶,每份牛奶價格p。現在需要n份牛奶,問最少需要多少錢。
思路:
貪心傻逼題。排序,盡量買價格最便宜的。
1 //#include<bits/stdc++.h> 2 #include<set> 3 #include<iostream> 4 #include<stdio.h> 5 #include<stdlib.h> 6 #include<cstring> 7 #include<queue> 8 #include<stack> 9 #include<algorithm> 10 11 using namespace std; 12 13 int n, m; 14 const int maxn = 5005; 15 struct node{ 16 int num, pri; 17 }peo[maxn]; 18 19 bool cmp(node a, node b) 20 { 21 return a.pri < b.pri; 22 } 23 24 int main() 25 { 26 scanf("%d%d", &n, &m); 27 for(int i = 0; i < m; i++){ 28 scanf("%d%d", &peo[i].pri, &peo[i].num); 29 } 30 sort(peo, peo + m, cmp); 31 int i = 0, ans = 0; 32 while(n && i < m){ 33 if(peo[i].num <= n){ 34 ans += peo[i].num * peo[i].pri; 35 n -= peo[i].num; 36 } 37 else{ 38 ans += peo[i].pri * n; 39 n -= n; 40 } 41 i++; 42 } 43 printf("%d\n", ans); 44 return 0; 45 }?
轉載于:https://www.cnblogs.com/wyboooo/p/10279471.html
總結
以上是生活随笔為你收集整理的洛谷 P1208混合牛奶【贪心】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PYTHON3 函数定义
- 下一篇: numpy.random详解