Fence Repair (优先队列做法)
1,这种错误不正是你想提前遇到并且解决的吗?
2,显然这题贪心法我已经忘了。
你都用你那种方法了,还写什么
if(min1=n-1) swap(a[min1],a[min2])
..你的min1必为0啊。。
3,贪心都复习了一下。 if(min1=n-1) swap(a[min1],a[min2]);
if(min1=n-1) swap(min1,min2);
这个能换两个。。
4,这个倒是没什么难的,我懂思想,基本上都懂了。
#include<iostream> #include<queue> using namespace std; int n,a[1005]; long long ans=0; priority_queue<int, vector<int>,greater<int> > que; int main() { cin>>n; for(int i=0;i<n;i++) {cin>>a[i];que.push(a[i]); } while(que.size()>1) { int a=que.top(); que.pop(); int b=que.top(); que.pop(); int t=a+b; ans+=t; que.push(t); } cout<<ans<<endl; }