Sensei and Affection (affection)题解

题目
考虑差分,设 a [ 0 ] = a [ n + 1 ] = 0 a[0]=a[n+1]=0 a[0]=a[n+1]=0,定义 a a a的差分数组 b [ i ] = a [ i ] − a [ i − 1 ] b[i]=a[i]-a[i-1] b[i]=a[i]a[i1] 1 < = i < = n + 1 1<=i<=n+1 1<=i<=n+1,则对原数组 a a a的区间 [ i , j ] [i,j] [i,j]加1的操作转化为差分数组 b b b上将 b [ i ] + + , b [ j + 1 ] − − , b[i]++,b[j+1]--, b[i]++,b[j+1],反之亦然。

m = 1 m=1 m=1时,目标值必然是 m a x max max,分别求出其与原数组 a a a的每个数的差值存入数组 b b b中,则目标变为让 b b b的所有数均变成 0 0 0,再求出 b b b的差分数组 c c c,目标又变为让 c c c的所有数变成 0 0 0,且只能进行区间减的操作,即 c [ i ] − − , c [ j + 1 ] + + c[i]--,c[j+1]++ c[i],c[j+1]++,由错位相消法得知 c c c的和为 0 0 0,即正数和负数一定能够通过上述操作两两抵消,由此推出操作数就是所有正数之和,或者 1 2 ∑ i = 1 n + 1 ∣ c i ∣ \large\frac{1}{2}\sum_{i=1}^{n+1}|c_i| 21i=1n+1ci,即 1 2 ∑ i = 1 n + 1 ∣ b i − b i − 1 ∣ \large\frac{1}{2}\sum_{i=1}^{n+1}|b_i-b_{i-1}| 21i=1n+1bibi1

m = 2 m=2 m=2时,考虑 d p dp dp,枚举两个目标 x , y x,y x,y,每一个值有两个目标可以选择,据此进行 d p dp dp转移即可, d p dp dp过程中需要排除负值造成的不合法转移,还需注意可能会出现目标值大于 m a x max max的情况,实测后发现 x , y x,y x,y至少要枚举到 125 125 125左右才能通过本题。

posted @ 2025-08-14 19:48  yxl1  阅读(1)  评论(0)    收藏  举报  来源