题目
n(n<=5e5)个数,第i个数ai(1<=ai<=1e9)
构造一个序列b,要求bi∈[1,ai],且b[i]不等于b[i+1]
求方案数,答案对998244353取模
思路来源
洛谷题解Xu_brezza
一模一样的cf题:
Codeforces Round 759 (Div. 2, based on Technocup 2022 Elimination Round 3) F. Non-equal Neighbours
题解

首先肯定是容斥,假设出现了一对冲突的就叫有一个坏点,
那么,答案=没有冲突的-至少一个冲突的+至少两个冲突的...
出现了一个坏点,就认为是合并减少了一个数,
所以最后如果减少了k个数,就认为序列被拆成了n-k段,且每段内的数字相同
dp[i][j]表示前i个数被划分成了j段的方案数,
其中每段内的数字是相同的,也就是从[1,这一段的最小值]中取
1. 朴素转移即枚举最后一段在哪,补上这最后一段的贡献,对应了这一个区间的最小值
复杂度
2. 注意到,第二维对容斥系数的贡献,只有第二维的奇偶性,所以可以改写为
前缀和分别维护第二维为奇数/为偶数的和,
复杂度

文章讲述了如何利用容斥原理和单调栈优化算法解决一个关于序列划分的问题,目标是在给定条件下计算满足特定相邻数不相等的序列组合数,最后答案对998244353取模。
最低0.47元/天 解锁文章
481

被折叠的 条评论
为什么被折叠?



