首先大部分题解没有给出dp的准确定义 c[i]=a[i]-i; 并且排序所以c[i]代表第i大 令f[i][j]表示前i个数,第i个数字大小为c[j](第j大的数字)的最少操作次数。 其次是一些证明 最终的结果只会出现c数组中已有的值 先说明结果不会圈小于最小值或者全大于最大值 否则更劣 在用反证法 如果一个值在c[i]与c[i+1]之间那么它调整为c[i] 或者c[i+1]会更优 因为它一定是从1~i 或者i+1~n转移