sort(a+1,a+n+1); w=n; for(int i=1;i<=n;i++){ ans+=w*a[i]; w--; } cout<<ans-a[1]<<endl;
猜你使用了类似上面这种逻辑的解法。 事实上这种做法是错误的,正解应该每次都取最小的的两个合并,而上述代码无法确保每次合并的两个都是最小的。
hack:
4
3 5 6 7
正确答案42