题面
考虑容斥(这也能容斥??..)
(把和前一位相同的位看作1,不同的看作2,全为2的方案即为所求,这应该就是一个普通的容斥问题了)
先考虑链的情况,显然有
f
i
=
∑
j
f
j
∗
m
i
n
(
a
j
+
1
…
a
i
)
∗
(
−
1
)
i
−
j
+
1
f_i=\sum_j f_j*min(a_{j+1}\ldots a_i)*(-1)^{i-j+1}
fi=j∑fj∗min(aj+1…ai)∗(−1)i−j+1
这显然可以用单调栈维护
然后考虑把链两端拼起来
a
n
s
=
∑
j
f
j
∗
(
m
i
n
(
a
j
+
1
…
a
n
)
−
1
)
∗
(
−
1
)
n
−
j
+
1
ans=\sum_j f_j*(min(a_{j+1}\ldots a_n)-1)*(-1)^{n-j+1}
ans=j∑fj∗(min(aj+1…an)−1)∗(−1)n−j+1
m
i
n
min
min后面的那个减一是为了排除首尾相等的情况
所以在容斥时可以不考虑这种情况
Code
(拍了n久拍不出错…但是只有70)
牛客网NOIP赛前集训营-提高组(第二场)_B_分糖果
最新推荐文章于 2022-09-29 07:37:55 发布