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[i−1]对
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| 21∑i=1n+1∣ci∣,即 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}| 21∑i=1n+1∣bi−bi−1∣
当 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左右才能通过本题。

浙公网安备 33010602011771号