数据加强了,原来nlogn的复杂度就不行了......

首先对原来的n个数排序(注意不能用快排),因为值域是1e5,所以可以开桶排序,开两个队列,一个存原来的n个数(已经满足单增),另一队列存两两合并后的数(也是满足单调性的),每次合并从两个队列中选取最小的两个数,合并后放入第二个队列就行了。

更难的题目还是蚯蚓,其中隐晦的单调性与此类似。

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define int long long
4 queue<int>q1;
5 queue<int>q2;
6 int n,to[100005];//to[]是桶
7
8 int read(){
9 int x=0,f=1;char c=getchar();
10 while(c<'0'||c>'9') {if(c=='-') f=-1;c=getchar();}
11 while(c>='0'&&c<='9') x=(x<<3)+(x<<1)+(c^48),c=getchar();
12 return x*f;
13 }
14
15 signed main(){
16 n=read();
17 for(int i=1;i<=n;i++){
18 int a;a=read();
19 to[a]++;
20 }
21 for(int i=1;i<=100000;i++){
22 while(to[i]){
23 to[i]--;
24 q1.push(i);
25 }
26 }
27 int ans=0;
28 for(int i=1;i<=n-1;i++){//合并n-1次
29 int x,y;
30 if((q1.front()<q2.front()&&!q1.empty())||q2.empty()){
31 x=q1.front();
32 q1.pop();
33 }
34 else{
35 x=q2.front();
36 q2.pop();
37 }
38 if((q1.front()<q2.front()&&!q1.empty())||q2.empty()) {
39 y=q1.front();
40 q1.pop();
41 }
42 else{
43 y=q2.front();
44 q2.pop();
45 }
46 ans+=x+y;
47 q2.push(x+y);
48 }
49 printf("%lld\n",ans);
50 return 0;
51 }

最新文章

  1. XP 安装Oralce 10g 数据库
  2. 如何搭建一个linux服务器
  3. Sqlserver推荐参数配置及日志收缩问题
  4. VS SuppressMessage忽略特定方法的警告信息
  5. Linux 内核版本规律
  6. 以k个元素为一组反转单链表
  7. 再来一个学历重要性讨论——QQ技术群聊
  8. HDU5908 Abelian Period 暴力
  9. 源码分析 Large-Margin Softmax Loss for Convolutional Neural Networks
  10. CF 543C Remembering Strings
  11. mysql 聚集索引和非聚集索引问题(整理)
  12. [leetcode]78. Subsets数组子集
  13. Eclipse导入jdk的源码
  14. ckeditor_4.5.10_full,ckfinder_aspnet_2.6.2,插件使用
  15. Android sdk 目录结构说明
  16. 20155326刘美岑2016-2017-2《Java程序设计》第一周学习总结
  17. 4字节emoji表情对应的Unicode编码获取和编码转换
  18. python学习笔记6--操作Mysql
  19. python基础下的数据结构与算法之顺序表
  20. 如何让input number类型的标签不产生上下加减的按钮

热门文章

  1. HashSet集合的介绍和哈希值
  2. sql语句实现每日资格设置
  3. 一文带你了解webrtc基本原理(动手实现1v1视频通话)
  4. React报错之useNavigate() may be used only in context of Router
  5. Taurus.MVC WebAPI 入门开发教程5:控制器安全校验属性【HttpGet、HttpPost】【Ack】【Token】【MicroService】。
  6. Tomcat报错:类XXXServlet不是Servlet 解决方法
  7. SpringCloud之Sentinel
  8. 【Java】学习路径60-利用TCP协议接收多个客户端的数据
  9. Swift中的Result 类型的简单介绍
  10. KingbaseES通过sys_waldump解析wal日志