每次将最大值拆成两个数和,然后将除这两个数的其他所有数都加上,这里有是一个问题:一些数字需要加上,一些数字又不需要加上,然后多次操作下,一些数字加上的次数还不一样!不妨认为拆分成了和,这样相当于所有数字都需要加上,所以用一个变量记录所有数字一共需要加上的数。 所以可以用优先队列得到最大值,然后进行次操作即可: void solve(){ int n, m, q, u, v, t; cin >> n >>&...