Poj 3253 贪心水题

来源:互联网 发布:java实验指导书答案 编辑:程序博客网 时间:2024/04/24 10:29

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;}

0 0
原创粉丝点击