UESTC 1599 wtmsb
2017-07-10 20:21
330 查看
这天,AutSky_JadeK看到了n张图片,他忍不住说道:“我TM社保!”。
![](https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=3255844562,3444322073&fm=11&gp=0.jpg)
每张图片有一个社保值,他可以合并两张图片,合并所得的图片的社保值是原来两张图片的社保值之和。
每次合并需要消耗的体力也是原来两张图片的社保值之和。 显然,n−1次合并之后,只剩下一张图片。
他想知道,在这个过程中,他消耗的总体力最少是多少。
第二行包含n个整数A1,A2,…,An,代表n张图片的社保值。
3
1 2 9
15
1≤Ai≤20001≤Ai≤2000
解题思路 优先队列
![](https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=3255844562,3444322073&fm=11&gp=0.jpg)
每张图片有一个社保值,他可以合并两张图片,合并所得的图片的社保值是原来两张图片的社保值之和。
每次合并需要消耗的体力也是原来两张图片的社保值之和。 显然,n−1次合并之后,只剩下一张图片。
他想知道,在这个过程中,他消耗的总体力最少是多少。
Input
第一行包含一个整数n,第二行包含n个整数A1,A2,…,An,代表n张图片的社保值。
Output
输出一行,包含一个整数,代表他消耗的总体力最少是多少。Sample input and output
Sample Input Sample Output3
1 2 9
15
Hint
1≤n≤200001≤n≤20000,1≤Ai≤20001≤Ai≤2000
解题思路 优先队列
#include <iostream> #include <cstdio> #include <cstring> #include <queue> #include <cmath> #include <vector> #include <algorithm> using namespace std; typedef long long ll; int main() { priority_queue<ll,vector<ll>,greater<ll> >q; ll n,x,a,b; ll ans=0; cin>>n; for(int i=0;i<n;i++) { cin>>x; q.push(x); } while(q.size()>=2) { a=q.top(); q.pop(); b=q.top(); q.pop(); a=a+b; ans+=a; q.push(a); } cout<<ans<<endl; return 0; }
相关文章推荐
- UESTC 1599 wtmsb【优先队列+排序】
- UESTC1599-wtmsb-优先队列
- ecjtu-summer training #4 C UESTC - 1599 (优先队列)
- 2017ecjtu-summer training #4 UESTC 1599
- UESTC 1599 wtmsb 优先队列(最小值优先)
- UESTC 1182 Blocked Road
- uestc 1191 beautiful palindromes
- Tyvj 1599 锻炼计划
- uestc 1425 Another LCIS(线段树 最长递增序列)
- UESTC Training for Data Structures——F
- UESTC Battery Charging (1647 )
- http://acm.uestc.edu.cn/problem.php?pid=1480&cid=164
- UESTC Training for Search Algorithm——G
- UESTC :吴神的战役
- UESTC Training for Graph Theory——F、Instantaneous Transference
- UESTC Training for Graph Theory——N、滑雪与时间胶囊(Large Input)
- UESTC 1711 Divide
- UESTC 1721:吴神,人类的希望_n个相同的球放进m个相同的盒子的问题
- HYSBZ 1599(狂枚举)
- uestc 1651 Fill Numbers