1.合并果子P1090
思路:每次将最小的两个果堆合并成一个新堆,合并后排序,但是超时了
#include<bits/stdc++.h> using namespace std; int a[20000]; int main() { int n,i,cnt=0,r=1,nn; cin>>n; nn=n; for(i=1;i<=n;i++) cin>>a[i]; for(;;) { sort(a+r,a+n+1); cnt+=a[r]+a[r+1]; a[r+1]=a[r]+a[r+1]; r++; nn--; if(nn==1) break; } cout<<cnt; return 0; }
优化代码
法1.使用优先队列或二叉树,可以高效地找出集合中的最小值,目前还未学习
法2.