[NOIP2004]合并果子

Posted cq.tiancx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[NOIP2004]合并果子相关的知识,希望对你有一定的参考价值。

题目: [NOIP2004]合并果子 ,哈哈,我们今天来看一道比较简单的题嘛,这是选自NOIP上的一道题,好了,我们一起来看看题意吧:

考虑到直接复制题目,或者截屏的方式不是很方便阅读,我就把直接题目链接放下面!
题目传送门: [NOIP2004]合并果子

思路:

我们用两个队列,一个队列装已经排好序的元素,一个队列装合并后的元素,然后我们取出队头小的一个并出队,然后我们取出队头小的一个并出队,然后把取出的两个元素相加,加入到合并元素的队列中去!具体的我们直接看代码!

我们来看看成功AC的代码吧:

#include<bits/stdc++.h>
using namespace std;
int n;
int a[10010];
queue<int> q1,q2;//用两个队列,方便理解
int main()
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    sort(a+1,a+1+n);
    for(int i=1;i<=n;i++) q1.push(a[i]);
    int ans=0;
    for(int i=1;i<n;i++)
        int x[3];
        for(int j=1;j<=2;j++)//找到队头小的
            if(q2.empty()||!q1.empty()&&q1.front()<q2.front())
                x[j]=q1.front(); q1.pop();
            else
                x[j]=q2.front(); q2.pop();
            
        
        ans+=x[1]+x[2];
        q2.push(x[1]+x[2]);
    
    cout<<ans;
    return 0;


谢谢你的阅读,由于作者水平有限,难免有不足之处,若读者发现问题,还请批评,在留言区留言或者私信告知,我一定会尽快修改的。若各位大佬有什么好的解法,或者有意义的解法都可以在评论区展示额,万分谢谢。
写作不易,望各位老板点点赞,加个关注!

以上是关于[NOIP2004]合并果子的主要内容,如果未能解决你的问题,请参考以下文章

NOIP提高组2004 合并果子题解

NOIP2004 fruit合并果子

[Noip2004][Day ?][T?]合并果子(?.cpp)

NOIP 2004

[NOIP2004] 提高组 洛谷P1090 合并果子

1063 合并果子 2004年NOIP全国联赛普及组