PKU 3253 Fence Repair
- ハフマン木を作る要領で解けるようです
- 分割するのではなく、全部バラけた状態からくっつける方向で考えると解けるようです
int main() { int N; cin >> N; priority_queue<ll, vector<ll>, greater<ll> > ls; for (int i = 0; i < N; ++i) { ll l; cin >> l; ls.push(l); } ll answer = 0; while (ls.size() != 1) { ll cost = ls.top(); ls.pop(); cost += ls.top(); ls.pop(); answer += cost; ls.push(cost); } cout << answer << endl; }