题目传送门
大致思路
由于数组中每个元素都不大于k,且即使替换后也满足$(1≤a_i≤k)$ ,故而最优 $x$ 在$[2,2k]$区间
由此可以想到好难想到,利用差分数组对每一个在区间内的x尝试,计算出对应的$x$需要修改多少次
对于任一$a_i$ , 计算$t=a_i+a_{n-i+1}$,对于$x==t$ 不做操作
对于任一 $x!=t$ :
如果$min(x,y)+1≤x≤max(x,y)+k$且 $x+y!=t$ ,对应的是该元素对只做一次修改便能满足的情况,对该区间的$x$的操作次数+1
对其他区间的$x$的操作次数+2
最后在还原数组的时候求最小值即可得出答案
Code
1 | void solve() { |
说些什么吧!