福建省队集训 20180708

福建省队集训 20180708

分数就当爆零了吧,不想敲暴力,直接订正

tetris

set维护区间覆盖(均摊O(n),每个点只会被覆盖一次),然后就对两个形状有一个偏移量求重叠的高度取max

好像直接bitset+记忆化就行了。猜不透他的复杂度,反正能过

intensify

容斥再总结:

F为恰好满足所有这些条件,G为至少满足这些条件: (G_{S}=sum_{Sin T}F_{T},F_{S}=sum_{Sin T}-1^{|T|-|S|}G_T)

所有条件等价:(G_i=sum_{j=i}^n {nchoose j}F_j,F_i=sum_{j=i}^n-1^{i-j}{nchoose j}G_j)

这题里F为至少满足一个条件,并且所有条件等价,那么$ans=G_{emptyset}-F_{emptyset}=sum_n-1{nchoose j}G_j$

具体来说,设$P(t)$为时间t仍然没有结束的生成函数,(P=sum_{t=1}^m p_t)

[ p_t=sum_{i=1}^m(-1)^{i-1} {mchoose i}frac{f_{i,m-i}(t)}{m^t} ]

m^t代表所有选择,$f_{i,j}(t)$表示t个回合中都强化前$i+j$项属性,所有方案的前 (i) 项属性都不满上限的概率之和。为什么要这么表示呢?因为可以递推:

[ f_{0,j}(t)=j^t,f_{i,j}(t)=sum_{l=0}^{k-1}{tchoose l}w_l f_{i-1,j}(t-l) ]

这个式子的意思是用l个回合强化i,$w_l$表示l个回合提升总等级小于k的概率,可以用简单dp

然后$f_{i,j}(t)=F_{i,j}(t)*left(frac j m ight)^t$,$F_{i,j}(t)$是一个不超过im次的关于t的多项式(展开组合数)

由插板法,

[ egin{aligned} frac{1}{(1-x)^{m+1}}&=left(sum_{nleq 0}x^n ight)^{m+1}\ &=left(sum_{nge 0}inom{m+1+n-1}{n}x^n ight)\ &=sum_{nge 0}inom{m+n}{n}x^n end{aligned} ]

那么

[ sum_{t=0}^{infty}{tchoose k}a^t=left(frac 1{1-a} ight)^k*a^k ]

相当于右移k位。

这提示了我们将Fijt维护成组合数多项式的形式,

[ egin{aligned} ans&=sum_{i=1}^m(-1)^{i-1}{mchoose i}sum_{t=0}^{infty}left(frac j m ight)^tsum_j^{infty}a_j{tchoose j}\ &=sum_{i=1}^m(-1)^{i-1}{mchoose i}sum_{j=0}^{infty}a_jsum_{t=0}^{infty}left(frac j m ight)^t{tchoose j} end{aligned} ]

然后j其实没有那么多项,写$infty$只是为了交换方便,可以当成后面的a都是0,那么枚举j再结合上面的式子就能算了。

关于维护组合数多项式,rqy在群里教的

[ C(t,l) * C(t-l, k) = C(t,k+l) * C(k+l,k) ]

后面的就看不懂了。

今天又是无所事事的一天

原文地址:https://www.cnblogs.com/lcyfrog/p/13039172.html