Gravatar
hsl_beat
积分:213
提交:33 / 51

感谢ruyi为这篇题解作出的贡献。


题目大意

给你$N-K+1$个数,第$i$个数表示原数组$A$中第$i-K+1$到$i$的和。


现在问你有多少个01数组$A$满足上面的条件,保证至少存在一个$A$合法。


思路


我们发现$A$中的数取值只有$0$和$1$,不难想到给你的$N-K+1$个数里,相邻的两个数相差只有$0$,$1$和$-1$两种情况。


我们可以考虑维护一个数组$A$,初始化所有元素为$-1$,表示元素都没有确定。


如果相邻元素的差不是$0$,这两个元素的大小就是确定的,直接在$A$中修改;如果差是$0$,这两个元素就是一定相等的。


所以对于一个我们知道的相等的元素的集合,只要知道里面随便一个元素的值,整个集合都能确定,直接用DSU维护这个关系即可,实现很简单,实现很简单,直接把已知的$A_i$的值放到她的根节点上,再对于每个元素把她根结点的值放到自己上即可。


最后我们需要满足前$K$个元素是读入进来数组的第一个数,这堆连通块整体的方案数是$C(cnt1, s-cnt2)$,其中$cnt1$是我们连通块的数量,$cnt2$是我们确定的$1$的数量。


对.于后面的连通块,他们的取值怎么样都行,直接把答案乘$2$即可。


~~见过的最简单的一道蓝题(~~


题目4190  Binaria      2      评论
2025-11-02 15:31:38