求助!!!10tps

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

``` #include<bits/stdc++.h> using namespace std; const int N=10010; typedef long long ll; ll n,a[N],ans; int main(){ scanf("%lld",&n); for(int i=1;i<=n;i++) scanf("%lld",&a[i]); sort(a+1,a+n+1); for(int i=2;i<=n;i++) { ans+=a[i-1]+a[i]; a[i]+=a[i-1]; for(int j=i+1;j<=n;j++) { if(a[j]<a[j-1]) swap(a[j],a[j-1]); else break; } } printf("%lld",ans); return 0; } ```
by luogu_gza @ 2022-07-25 15:54:34


@[acwing_gza](/user/301255) 为啥要这样Orz
by wh_1024 @ 2022-08-07 20:22:35


@[acwing_gza](/user/301255) 懂了,OOOOrrrrZZZZZ
by wh_1024 @ 2022-08-07 20:37:37


@[wh_1024](/user/648053) 每一次都要排序一次。 ``` 比如说 1 2 3 4 5 直接弄的话,(1+2)+(1+2+3)+(1+2+3+4)+(1+2+3+4+5)=3+6+10+15=34 每一次都排序: 1+2=3 3 3 4 5 3+3=6 6 4 5->4 5 6 4+5=9 9 6->6 9 6+9=15 3+6+9+15=33 少了1 ```
by luogu_gza @ 2022-08-07 20:44:03


|