首页 > 代码库 > POJ3253 Fence Repair(贪心)
POJ3253 Fence Repair(贪心)
切割木板的顺序是自由的,所以每次选择两块最短的板,组合在一起,加入队列,原来两个板出队,直到队列中为空或者只剩下一个板时结束。这里使用优先队列较为方便。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<queue> #define ll __int64 using namespace std; int len[20005]; int main() { //freopen("d:\\test.txt","r",stdin); int n; ll ans=0; cin>>n; priority_queue<int,vector<int>,greater<int> >q;//最小元素在队头 for(int i=0;i<n;i++) { cin>>len[i]; q.push(len[i]); } while(!q.empty()) { int t1=q.top(); q.pop(); if(!q.empty()) { int t2=q.top(); q.pop(); ans+=t1+t2; q.push(t1+t2); } else break; } printf("%I64d\n",ans); return 0; }
POJ3253 Fence Repair(贪心)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。