STL堆,为什么RE

P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G

@[Anythingispossible](/user/877829) 你操作是pop了两次,你不能保证堆里面的个数是大于等于2的,所以re了,wgile里的条件应该改成q.size()>=2
by _zzzzzzy_ @ 2023-12-03 11:03:59


只剩下一个元素的时候取不到堆顶,只有堆内元素大于等于2时才可以
by Scorilon @ 2023-12-03 11:04:02


@[Anythingispossible](/user/877829) ```cpp #include <bits/stdc++.h> #define ll long long using namespace std; priority_queue <ll,vector<ll>,greater<ll> > q;//greater less 别写错 ll n,ans; int main(){ scanf("%lld",&n); for(ll i=1;i<=n;i++){ int a; scanf("%lld",&a); q.push(a); } while(q.size()>1){ ll a=q.top();q.pop(); ll b=q.top();q.pop(); ans=ans+a+b; q.push(a+b); } printf("%lld\n",ans); return 0; } ```
by kevinZ99 @ 2023-12-03 11:06:31


@[Scorilon](/user/448593) 过了\bx
by Anythingispossible @ 2023-12-03 11:11:47


@[_zzzzzzy_](/user/715244) 谢谢
by Anythingispossible @ 2023-12-03 11:12:38


|