9个RE求助!!!

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

用二叉堆做的
by 高清重置版hy @ 2017-08-03 15:25:46


#上面没注释,再发一遍 ```cpp #include<iostream> #include<cstdio> using namespace std; int main(){ long long n,a[1000000+100],k,m,j,ans=0,lin=0; cin>>n; cin>>a[1]; for(int i=2;i<=n;i++){ cin>>a[i]; j=i; while(a[j]<a[j/2]&&j>1){ int tmp=a[j]; a[j]=a[j/2]; a[j/2]=tmp; j/=2;//输入,排序 } } int v=n;lin=a[1]; for(int q=1;q<=n-1;q++){ a[1]=lin; while(a[q]<a[q/2]&&q>1){ int tmp=a[q]; a[q]=a[q/2]; a[q/2]=tmp; q/=2;//每次合并后重新排序 } k=1; a[1]=a[v--]; while((a[k]>a[2*k]&&k*2<=v)||(a[k]>a[k*2+1]&&k*2+1<=v)){ m=k*2; if(a[m]>a[m+1]&&m+1<=v)m++; int temp=a[k]; a[k]=a[m]; a[m]=temp; k=m; }lin+=a[1]; ans+=lin;//删掉一个儿子 } cout<<ans; return 0; } ```
by 高清重置版hy @ 2017-08-03 15:30:32


@lxyhhhhhh
by 高清重置版hy @ 2017-08-03 15:37:37


学习优先队列,拯救你于水火之中(滑稽)
by Jacob233 @ 2017-08-03 15:55:46


去学优先队列吧(doge 手打堆累死(#雾
by VenusM1nT @ 2017-08-06 09:52:28


|