首页 > 代码库 > poj 3053 Fence Repair
poj 3053 Fence Repair
题目链接:http://poj.org/problem?id=3253
思路:
题目与哈夫曼编码原理相同,使用优先队列与贪心思想;读入数据在优先队列中,弹出两个数计算它们的和,再压入队列中;
代码:
#include <iostream>#include <queue>using namespace std;struct cmp{ bool operator() (long long a, long long b) { return a > b; }};int main(){ priority_queue<long long, vector<long long>, cmp> Q; long long n, ans = 0; cin >> n; for (int i = 0; i < n; ++i) { long long num; cin >> num; Q.push(num); } long long a, b; while (Q.size() != 1) { a = Q.top(); Q.pop(); b = Q.top(); Q.pop(); ans += a + b; Q.push(a + b); } cout << ans << endl; return 0;}
poj 3053 Fence Repair
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。