题目

原题链接:http://codeforces.com/problemset/problem/884/D

现有一堆小石子,要求按要求的数目分成N堆,分别为a1、a2、...an。具体的,每次选一个堆(其重量为代价),分成2或3堆。求最小的可能代价。

思路

我们反向考虑,就是一个不断合并的过程。当n为奇数,我们总能找到三个最小的合并,直到只剩一堆;当n为偶数,先选择最小的两个合并,再按奇数一样处理。(为了统一起来,添加一个辅助堆,石子个数为0)

代码实现

 #include<stdio.h>
#include<iostream>
#include<queue>
using namespace std; typedef long long ll;
int n; int main()
{
while (scanf("%d",&n) == )
{
priority_queue<ll,vector<ll>,greater<ll> >q;
ll ans = ;
for (int i = ; i < n; i++)
{
int tmp;
scanf("%d", &tmp);
q.push(tmp);
}
if ((n & ) == ) q.push(); //n为偶数,补充一个0
while (q.size() > )
{
ll a = q.top(); q.pop();
ll b = q.top(); q.pop();
ll c = q.top(); q.pop();
ans += (a + b + c);
q.push(a + b + c);
}
q.pop();
printf("%I64d\n", ans);
}
}

参考链接:

http://codeforces.com/blog/entry/55470

http://www.cplusplus.com/reference/queue/priority_queue/

最新文章

  1. linux 环境变量
  2. View和ViewImage设置图片
  3. imx6 MFG TOOL 分析
  4. BZOJ 2584: [Wc2012]memory(扫描线+线段树)
  5. 搜索(四分树):BZOJ 4513 [SDOI2016 Round1] 储能表
  6. Light OJ 1067 Combinations (乘法逆元)
  7. Spring——自定义属性编辑器+Bean的生存范围+Bean的生命周期
  8. 14.1.1 InnoDB as the Default MySQL Storage Engine
  9. MyBatis 配置的一些小知识点
  10. IDL 结构体
  11. Java反射之修改常量值
  12. Android应用程序国际化
  13. 学习笔记(一)HTML基础
  14. HTML5标签选择,图文混排使用dl dt dd
  15. 流媒体技术学习笔记之(十八)互联网草案HTTP直播流2017年5月
  16. elf逆向入门
  17. Kubernetes持久化存储1——示例
  18. react项目的ant-design-mobile的使用
  19. windows 8,关闭随意窗体都提示“已停止工作”的解决的方法
  20. Android系统执行Java jar程序 -- dalvik运行dex Java工程

热门文章

  1. MyBatis学习 之 六、insert操作返回主键
  2. 【hdu 5418】 Victor and world
  3. 《算法概论》第八章的一些课后题目 关于NP-Complete Problem
  4. PostgreSQL新手教程
  5. page-break-before和page-break-after
  6. lua ffi简介
  7. 09_多线程下载_获取文件长度&amp;计算下载范围
  8. Oracle Escape
  9. Educational Codeforces Round 21E selling souvenirs (dp)
  10. hdoj5842【水题】