每日一题?(或者几题)

今天来分享一下P1208 [USACO1.3] 混合牛奶 Mixing Milk,这是一道用了贪心思想的题。什么是贪心思想,就是每一步都以最优解来考虑,来达到最后的结果。这需要这道题每步最优之后,最终的结果也是最优,所以并不是所有的题都能用贪心思想。而本题需要找到最便宜的牛奶采购方案,每步都去找最便宜的采购,最后恰恰也是最便宜的。贴一下代码。

#include <bits/stdc++.h>
using namespace std;

struct milk{
      long num=1001;
      long p;
};

bool cmp(milk x,milk y)
{
	return x.num<y.num;
}

int main (){
    long n,m;
    cin>>n>>m;
    
    milk Milk[2000000];
    for(int i = 0;i<m;i++){
        cin>>Milk[i].num>>Milk[i].p;
    }
    sort(Milk+0,Milk+m,cmp);
    long fee = 0;
    for(int i=0;i<m;i++){
        if(Milk[i].p<=n){
            fee += Milk[i].p*Milk[i].num;
            n-=Milk[i].p;
        }
        else{
           fee += Milk[i].num*n; 
           break;
        }
    }
    cout<<fee;
    return 0;
}

这道题运用贪心思想还是很简单的,值得一提的是结构体的排序。众所周知,在c++的基础库中会提供一个sort函数,非常的好用,但是对于结构体他究竟该怎么使用呢?就是要先对结构体里作为基准排序的那个元素添加一个函数,来对元素的大小判断输出是否。然后在使用sort函数中,分别在第一个位置传入,数组的名字加上第一个元素的位置,再在第二个位置传入排序的最后一个元素位置+1,在第三个位置传入判断函数。这样就可以按照结构体数组的指定元素顺序来排序整个数组了。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇