bzoj1724[Usaco2006 Nov]Fence Repair 切割木板
2017-04-14 11:14
232 查看
小根堆维护一下就好了。
#include <iostream> #include <cstring> #include<cstdio> #define fo(i,a,b) for(int i=a;i<=b;i++) using namespace std; int heap[100001],sz=0; typedef long long ll; int n; inline void put(int y) { heap[++sz]=y; int x=sz; while (x>1&&heap[x>>1]>heap[x]) { swap(heap[x],heap[x>>1]); x>>=1; } } inline int get() { int t=heap[1]; heap[1]=heap[sz--]; int x=1; while (x<=(sz>>1)) { int next=x<<1; if (next<sz&&heap[next|1]<heap[next])next++; if (heap[next]>=heap[x])return t; swap(heap[next],heap[x]); x=next; } return t; } int main() { scanf("%d",&n); fo(i,1,n) { int x; scanf("%d",&x); put(x); } ll ans=0; fo(i,1,n-1) { int x=get(),y=get(); put(x+y); ans+=x+y; } printf("%lld\n",ans); return 0; }
相关文章推荐
- BZOJ1724: [Usaco2006 Nov]Fence Repair 切割木板
- bzoj:1724: [Usaco2006 Nov]Fence Repair 切割木板
- 【BZOJ】1724 [Usaco2006 Nov]Fence Repair 切割木板
- BZOJ 1724 [Usaco2006 Nov]Fence Repair 切割木板 贪心+堆
- BZOJ 1724 [Usaco2006 Nov]Fence Repair 切割木板
- BZOJ 1724: [Usaco2006 Nov]Fence Repair 切割木板 堆
- 【bzoj1724】[Usaco2006 Nov]Fence Repair切割木板
- BZOJ1724: [Usaco2006 Nov]Fence Repair 切割木板
- BZOJ1724: [Usaco2006 Nov]Fence Repair 切割木板
- bzoj1724【Usaco2006 Nov】Fence Repair 切割木板
- bzoj 1724: [Usaco2006 Nov]Fence Repair 切割木板【堆】
- [BZOJ1724][Usaco2006 Nov]Fence Repair 切割木板
- BZOJ 1724: [Usaco2006 Nov]Fence Repair 切割木板
- 【BZOJ 1724】[Usaco2006 Nov]Fence Repair 切割木板 堆+贪心
- 1724: [Usaco2006 Nov]Fence Repair 切割木板
- 1724: [Usaco2006 Nov]Fence Repair 切割木板
- 1724: [Usaco2006 Nov]Fence Repair 切割木板
- 1724: [Usaco2006 Nov]Fence Repair 切割木板( 贪心 )
- [Usaco2006 Nov] Fence Repair 切割木板
- bzoj:1725: [Usaco2006 Nov]Corn Fields牧场的安排