[luogu8340]山河重整
记$S$中的元素依次为$a_{1} 结论:$S$合法当且仅当$\begin{cases}\sum_{i=1}^{k}a_{i}\ge n&(1)\\\forall i\in [1,k],\sum_{j=1}^{i-1}a_{j}+1\ge a_{i}&(2)\end{cases}$ 必要性:若$(1)$不满足则无法得到$n$,若$(2)$不满足则无法得到$\sum_{i=1}^{j-1}a_{j}+1$ 充分性:对于$x\in [1,n]$,从后往前枚举$i$并在$x\ge a_{i}$时将$x$减去$a_{i}$,归纳$x\le \sum_{j=1}^{i}a_{j}$即可 推论:$S$合法当且仅当$\forall x\in [1,n],S$中$\le x$的元素和$\ne x-1$ 必要性:若$S$中存在$x$的后继$a_{i}$则$\sum_{j=1}^{i-1}a_{j}+1=x 充分性:若$(1)$不满足则取$x=\sum_{i=1}^{k}a_{i}+1$,若$(2)$不满足则取$x=\sum_{j=1}^{i-1}a_{j}+1$ 枚举最小的$x$(不满足条件),记对应的方案数为$f_{x}$,则转移即 关于前者,变形得$\sum_{i=1}^{k}a_{i}=\sum_{i=1}^{k}(a_{i}-a_{i-1})(k-i+1)$,且两者一一对应 记$g_{s}$为$\sum_{i=1}^{k}i\cdot x_{i}=s$的解数(其中$x_{i}\ge 0$且非0的$x_{i}$构成前缀),则方案数也即$g_{x}$ 注意到$k\le \sqrt{2s}$,倒序枚举$k$并对$g$做完全背包(对每个$k$均设初值$g_{0}=1$),时间复杂度为$o(n\sqrt{n})$ 关于后者,可以看作每次设初值为$g_{x'+kx'}=f_{x'}$时的结果,并根据$x'\le \lfloor\frac{x}{2}\rfloor$分治即可 总复杂度为$o(n\sqrt{n})$,可以通过
$$
f_{x}=\{[1,x]子集和为x-1的方案数\}-\sum_{x'=1}^{x-1}\{(x',x]子集和为x-x'的方案数\}f_{x'}
$$
另外,答案为$2^{n}-\sum_{x=1}^{n}2^{n-x}f_{x}$ 1 #include