您的位置:首页 > 其它

Poj 3253 贪心水题

2015-03-08 22:27 288 查看

Poj 3253

题目:http://poj.org/problem?id=3253

题目分析:
题目大意:用一块足够大的木板,分割成一块块的木材做成栅栏,但是得收费,每割x长的木板花x块钱。但是这题的代码做法相反。收费的长度可以等于两个两个拼起来。

代码:
#include <iostream>
#include <queue>
#include <functional>
using namespace std;

priority_queue<int, vector<int>, greater<int> > q;

int main()
{
int n;

while(cin >> n && n)
{
while(n--)
{
int tmp;
cin >> tmp;
q.push(tmp);
}
long long res = 0;
while(q.size() > 1)
{
int min1 = q.top();
q.pop();
int min2 = q.top();
q.pop();

int sum = min1 + min2;
res += sum;
q.push(sum);
}

cout << res << endl;
}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: