uva-10954-贪心
Posted shuiyonglewodezzzzz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uva-10954-贪心相关的知识,希望对你有一定的参考价值。
题意:俩个数相加,产生的和就是这次加法的代价,问,所有数都加起来,最小代价是多少
解题思路:贪心,每次都选取最小俩个数相加,如果只有一个数,计算完毕,注意,加法的和要再次入队列。
#include <string> #include<iostream> #include<map> #include<memory.h> #include<vector> #include<algorithm> #include<queue> #include<vector> namespace cc { using std::cout; using std::endl; using std::cin; using std::map; using std::vector; using std::string; using std::sort; using std::priority_queue; using std::greater; using std::vector; constexpr int N = 5000; priority_queue<int,vector<int>, greater<int> >q; void read(int n) { while (q.empty() == false) q.pop(); int k = 0; while (n--) { cin >> k; q.push(k); } } void solve() { int n; while (cin >> n && n) { read(n); int cost = 0; while (q.empty() == false) { int sum = 0; int i = q.top(); q.pop(); if (q.empty() == true) break; int k = q.top(); q.pop(); sum = i + k; cost =cost+sum; q.push(sum); } cout << cost << endl; } } }; int main() { #ifndef ONLINE_JUDGE freopen("d://1.text", "r", stdin); #endif // !ONLINE_JUDGE cc::solve(); return 0; }
以上是关于uva-10954-贪心的主要内容,如果未能解决你的问题,请参考以下文章