为什么只有10分啊:((((

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

@[xmkxk](/user/897118) 看一下这个 ```cpp #include<bits/stdc++.h> using namespace std; int main(){ //典型的贪心,每一次都只合并所花力气最小的两堆果子! int a[10000], n, sum = 0; cin >> n; for (int i = 1; i <= n; i++){ cin >> a[i]; } sort(a + 1, a + n + 1); //初始排序 for (;;){ int j = 1; if (j == n) break; else{ a[j] += a[j + 1]; sum += a[j]; for (int i = j + 1; i < n; i++){ //将第一堆后面的前移一个位置,去掉最后一堆 a[i] = a[i + 1]; } n--; for (int i = j; i < n; i++){ //把果子堆重新再从小到大排序继续循环直至跳出! if (a[i] > a[i + 1]) swap(a[i], a[i + 1]); } } } cout << sum << endl; return 0; } ```
by Kimi_0406 @ 2023-08-19 17:55:13


@[xmkxk](/user/897118) 你那个有点复杂
by Kimi_0406 @ 2023-08-19 17:55:59


@[KiMi_0406](https://www.luogu.com.cn/user/1067870) @[xmkxk](https://www.luogu.com.cn/user/897118) 为何不用priority_queue?
by Rainbowgzh2012 @ 2023-08-24 16:14:02


STL大法
by Rainbowgzh2012 @ 2023-08-24 16:14:30


问题是取走堆顶后,判断 break 前要先判断 $son$ 要不要 ```++```
by xmkxk @ 2023-11-09 08:35:47


|