题目链接:UESTC 1599 wtmsb

题意:给你一组数,每一次取出两个最小的数,将这两个数的和放入这组数中,直到这组数只剩下一个,求最后剩下那个数的大小!

分析:比赛的时候首先我就看到这道题数据是200000,跑时100ms,我把思路捋了一遍,然后讲给旁边人听,一眼看过去,lfh说用哈夫曼树吧,然后找了个板子直接扔上去了,

结果显示出这样的操作:Restricted Function on test 1,从来没见过这个错误啊,百度找了一下,发现这个错误是它oj本身不支持某些函数,比如qsort这种排序操作,wc。。。有毒吧!然后气炸的我扔了一个sort排序,这回总应该过了吧,Time Limit Exceeded on test 1,好的吧,这个怕是有毒哦,后来稳了下yzx,他说优先队列+排序可过,我问:时间复杂度呢!然后,,,,他说不知道,随便搞搞就过了!这TM也行?看来要好好学数据结构了!

优先队列+排序的做法就是取出队头的两个数,然后把它们的和推入到这个队列中,然后优先队列会自动进行排序操作,所以你就能每一次取出两个最小的数,然后推入这两个数的和到队列中去,时间复杂度估计不会超过O(n)(毕竟只有100ms啊,大概也就只能跑1e7的数据)

下面给出AC代码:

 #include <bits/stdc++.h>
using namespace std;
const int N=;
int main()
{
int n;
cin>>n;
priority_queue<int, vector<int>, greater<int> >q;
for(int i=;i<n;i++)
{
int x;
cin>>x;
q.push(x);
}
int sum,ans=;
while()
{
int head1=q.top();
q.pop();
int head2=q.top();
q.pop();
sum=head1+head2;
ans=ans+sum;
if(q.empty())
break;
q.push(sum);
}
cout<<ans<<endl;
return ;
}

UESTC 1599 wtmsb【优先队列+排序】的更多相关文章

  1. UESTC 1599 wtmsb

    这天,AutSky_JadeK看到了n张图片,他忍不住说道:“我TM社保!”. 每张图片有一个社保值,他可以合并两张图片,合并所得的图片的社保值是原来两张图片的社保值之和. 每次合并需要消耗的体力也是 ...

  2. JS优先队列排序。出队时,先找出优先级最高的元素,再按照先进先出出队。

    JS优先队列排序.出队时,先找出优先级最高的元素,再按照先进先出出队. /* * 优先队列 * 出队时,先找出优先级最高的元素,再按照先进先出出队. * */ function Queue(){ th ...

  3. CodeForces - 721D 贪心+优先队列(整理一下优先队列排序情况)

    题意: 给你一个长度为n的数组,你可以对其中某个元素加上x或者减去x,这种操作你最多只能使用k次,让你输出操作后的数组,且保证这个数组所有元素的乘积尽可能小 题解: 在这之前我们要知道a*b>a ...

  4. 2017ecjtu-summer training #4 UESTC 1599

    题目链接   http://acm.uestc.edu.cn/#/problem/show/1599 题意   n个数 每次合并最小的两个数加到sum中,直到只剩一个数为止 常规解会超时,后来想到了用 ...

  5. UESTC 1599.wtmsb-STL(priority_queue)

    wtmsb Time Limit: 1000/100MS (Java/Others) Memory Limit: 131072/131072KB (Java/Others) 这天,AutSky_Jad ...

  6. MySQL排序原理与案例分析

    前言      排序是数据库中的一个基本功能,MySQL也不例外.用户通过Order by语句即能达到将指定的结果集排序的目的,其实不仅仅是Order by语句,Group by语句,Distinct ...

  7. 【MySQL】排序原理与案例分析

    前言 排序是数据库中的一个基本功能,MySQL也不例外.用户通过Order by语句即能达到将指定的结果集排序的目的,其实不仅仅是Order by语句,Group by语句,Distinct语句都会隐 ...

  8. MySQL排序原理与MySQL5.6案例分析【转】

    本文来自:http://www.cnblogs.com/cchust/p/5304594.html,其中对于自己觉得是重点的加了标记,方便自己查阅.更多详细的说明可以看沃趣科技的文章说明. 前言    ...

  9. [转]MySQL排序原理与案例分析

    这篇文章非常好,就把他转过来 前言      排序是数据库中的一个基本功能,MySQL也不例外.用户通过Order by语句即能达到将指定的结果集排序的目的,其实不仅仅是Order by语句,Grou ...

随机推荐

  1. 【十九】require和include的区别

    1.require是一个函数,include是一个关键字 2.require是无返回值,include有返回值 3.include()会产生一个警告,而require()则导致一个致命的错误(出现错误 ...

  2. Python Xcode搭建Python环境以及使用PyCharm CE

    pycharm CE下载   使用教程 1.基础学习网站 2.在Xcode7中搭建python开发环境,这个不行了就试试第二个,我是第二个可以正常输出了,第一个没有输出 3.Python学习-MAC下 ...

  3. iOS 判断数组array中是否包含元素a,取出a在array中的下标+数组方法详解

    目前找到来4个解决办法,第三个尤为简单方便 NSArray * arr = @["]; //是否包含 "]) { NSInteger index = [arr indexOfObj ...

  4. Linux中dos2unix批量转换

    有时候遇到多层目录下的文件格式需要转换,dos2unix 没有-r之类的递归指令,所以需要与find还有管道结合. find -type f | xargs dos2unix -o

  5. 9.11 test

    题面.pdf T1:通过打表发现,从一个点出发只有距离为1,2,3,5,6,9,10,13,17的点才不能到达: 那么我们转移的时候只有距离在20以内才不一定能直接转移,那么我们离散化之后; 对于每一 ...

  6. [知了堂学习笔记]_用JS制作《飞机大作战》游戏_第4讲(创建敌方飞机、敌方飞机发射子弹、玩家子弹击中敌方小飞机,小飞机死亡)

    一.创建敌方飞机 1.思考创建思路: 创建敌方飞机思路与创建玩家飞机思路一样: (1)思考敌方飞机具备什么属性: 敌方飞机的图片.坐标.飞行速度.状态(是否被击中) 设置小飞机被击中时消失时间.飞机可 ...

  7. FPGA 设计总结(1)

    1. set_input_delay和set_output_delay的选项-max和-min的理解 首先 input/output其实是模拟数据在端口外的延时,是一个外部约束条件,目的是为了约束FP ...

  8. Webpack 2 视频教程 017 - Webpack 2 中分离打包项目代码与组件代码

    原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲 ...

  9. C# DataGridView中DataGridViewComboBoxCell列,下拉框事件的处理【完美解决】

    http://blog.csdn.net/a312100321/article/details/25195311 问题:DataGridView绑定数据源之后,有一列需要用下拉框DataGridVie ...

  10. Python爬取视频(其实是一篇福利)

    窗外下着小雨,作为单身程序员的我逛着逛着发现一篇好东西,来自知乎 你都用 Python 来做什么?的第一个高亮答案. 到上面去看了看,地址都是明文的,得,赶紧开始吧. 下载流式文件,requests库 ...