P1090 我的思路有什么不对的吗?

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

@[MaxFantastic](/user/518277) 力气要相加而且你这么写每次都排序会超时
by jeamark_233 @ 2023-05-26 10:40:23


@[MaxFantastic](/user/518277) 一直排序复杂度都不对啊
by 北文 @ 2023-05-26 11:17:13


```cpp #include<iostream> #include<algorithm> #define MAXN 10005 using namespace std; int a[MAXN],ans=0; int energy=0; int main() { ios::sync_with_stdio(0); cin.tie(0); int n; cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; sort(a+1,a+n+1); for(int i=1;i<=n-1;i++) { energy+=a[i]+a[i+1]; //力气相加 a[i+1]=a[i]+a[i+1]; sort(a+i+1,a+n+1); //排序,为下一次选择做准备 //因为合并后的堆数越来越少,所以将排序范围缩小 } cout<<energy; return 0; } ``` 这样改思路是对的,可是会超时。
by jeamark_233 @ 2023-05-26 11:24:35


@[MaxFantastic](/user/518277) 建议使用大根堆来进行[堆排序](https://blog.csdn.net/weixin_51609435/article/details/122982075),将最小的两项合并、两项和再插入,你这样会TLE
by c20220427 @ 2023-05-26 12:31:53


|