首页 > 其他分享 >洛谷p1090__合并果子

洛谷p1090__合并果子

时间:2023-11-15 21:00:49浏览次数:39  
标签:__ arr 洛谷 果子 int 队列 p1090 include

合并果子可以作为mulitset的板子题

 mulitset的 ac code

#include<iostream>
#include<set>
using namespace std;

multiset<int,less<int>> m;

int main()
{
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        int t;
        cin>>t;
        m.insert(t);
    }
    long long sum=0;
    for(int i=0;i<n-1;i++)
    {
        int a,b;
        a=*m.begin();
        m.erase( m.begin() );
        b=*m.begin();
        sum+=a;sum+=b;
        m.erase( m.begin() );
        m.insert(a+b);
    }
    cout<<sum;
    system("pause");
    return 0;
}

  除了这种方法,好鱼还提供了另一种解法:利用两个队列来搞定

#include<iostream>
#include<set>
#include<queue>
#include<algorithm>
using namespace std;

int arr[10005];
queue<int> m,p;

int main()
{
    int n;
    cin>>n;
    int sum=0;      //temp的作用是模拟副队列进行比较
    
    for(int i=0;i<n;i++)cin>>arr[i];
    sort(arr,arr+n);             //将输入的元素排列,下一步放入主队列

    for(int i=0;i<n;i++)m.push(arr[i]);   //此时得到一个有序队列,作为主队列
    
    int a,b;
    for(int i=0;i<n-1;i++)
    {
        if(p.size() && m.size())
        {
            a=min(m.front(),p.front());
            if(m.front()<p.front())m.pop();
            else p.pop();
        }
        else if(m.size())
        {
            a=m.front();m.pop();
        }
        else 
        {
            a=p.front();p.pop();
        }
        if(p.size() && m.size())
        {
            b=min(m.front(),p.front());
            if(m.front()<p.front())m.pop();
            else p.pop();
        }
        else if(m.size())
        {
            b=m.front();m.pop();
        }
        else 
        {
            b=p.front();p.pop();
        }
        sum+=(a+b);
        p.push(a+b);   //p队列里面的元素一定是有序的,显然
    }
    cout<<sum;
    system("pause");
    return 0;
}

  嗯,收获颇多。

标签:__,arr,洛谷,果子,int,队列,p1090,include
From: https://www.cnblogs.com/bosssz/p/17834760.html

相关文章

  • CF486D Valid Sets
    题目描述:给定\(n\)个点的树,点有点权,求满足最大点权与最小点权之差小于等于\(d\)的连通子图数目。答案对\(10^9+7\)取模。数据范围:\(1\led\le2000,1\len\le2000\)\(1\lea_i\le2000\)\(1\leu,v\len\)思路:根据我们以往的做题经验,因为要求选出的是一个连通子图......
  • B3871 题解
    题目链接题意简述给定一个正整数\(N\),将它的因数分解式按规定输出。题目分析模拟题意即可。具体地,我们可以枚举\(2\)到\(\lfloor\sqrtN\rfloor\)中所有数\(i\),如果\(i\)能整除\(N\),则不断地从\(N\)中除掉\(i\),直到\(i\)不再能整除\(N\),在这个过程中,我们同......
  • LiveCharts控件基本使用
    AngularGanuge控件 1usingSystem.Windows;2usingSystem.Windows.Forms;3usingSystem.Windows.Media;4usingLiveCharts.Wpf;5usingBrushes=System.Windows.Media.Brushes;67namespaceWinforms.Gauge.AngularGauge8{9publicpartial......
  • 蓝桥杯管道 -- 二分, 区间覆盖
    蓝桥杯管道--二分,区间覆盖原题链接参照执梗大佬的代码,我太菜了wuwuwu......importjava.util.ArrayList;importjava.util.Collections;importjava.util.List;importjava.util.Scanner;/***ClassName:Main12*Package:*Description:**@author:LH寒酥......
  • 11.15每日总结
    1114lombok的使用和注册接口与登录接口细节   先导入lombok的依赖,加上@Data注解  这是pojo包下的result,使用的两个注解是无参构造和有参构造controller:书写 service接口书写: serviceImol书写: 其中@Service把把该类注入到容器中,@Autowired注解是依赖注......
  • 【LGR-166-Div.4】洛谷入门赛17
    【LGR-166-Div.4】洛谷入门赛#17比赛地址这次是div4的难度,整体不算是很难,很适合小白玩家[10月入门赛-A]食堂题目描述为了给师生提供良好的用餐体验,洛谷小学的食堂坚持现炒、现做每一道菜肴。洛谷小学一共有\(a\)名老师和\(b\)名学生。食堂的营养师为每位师生的用餐进......
  • 【misc】[SDCTF 2022]Flag Trafficker --jsFuck代码
    附件下载下来是一个流量包,用wireshark打开该流量包,然后搜索字符串"flag",就会出现如下的jsfuck代码右键onlick显示分组字节可以看到很大一串的jsfuck代码,现在是需要运行这段代码,可利用在线网站运行:JSFuck-在线加解密(bugku.com),运行完就是flag还可以保存为html文件在浏......
  • JAVA大小写敏感问题
    最近从Golang转JAVA,据我了解JAVA是大小写敏感的,于是我写了如下的测试代码`classTable{}classtable{}publicclassMyMultiClass{publicstaticvoidmain(String[]args){TableT=newTable();tablet=newtable();}}`结果出现了下面的错误`Exceptionin......
  • CF570D Tree Requests
    题意给定一棵根为\(1\)的有根树,以及字符串\(S\)。\(x,h\)求\(x\)的子树内,深度为\(h\)的节点的字符能否重排为一个回文串。Sol不难发现,回文串显然至多有一个字符出现奇数个。所以我们对于每种字符随机附权值,维护前缀异或值。查询时枚举\(26\)种为奇数的情况,这是......
  • 第二章——线性表
    第二章——线性表 一、线性表简述1、什么是线性表?线性表(linearlist)是n个具有相同特性的数据元素的有限序列,是一种在实际中广泛使用的数据结构。像数组charbuf[5]={1,2,3,4,5},里面出现的元素都是char型的,不会是int、float等其他类型。2、常见的线性表顺序表、链表、......