手工栈
1 | int siz=40<<20;//40M |
记住要 exit(0)
1 | int siz=40<<20;//40M |
记住要 exit(0)
有顺序的树链剖分模板题,注意Node中ans初始值为0(否则相当于空序列中有一种颜色)并且Lval和Rval的值不能存在于序列之中
你在桥上看风景,看风景的人在轰炸机上看着你。
一句话:两个人相遇后可以看做互换身份然后走和没相遇直接穿过去是一样的
由于内容过长、公式较多,暂时将内容隐藏,请公式恐惧症们做好心理准备。
我们先设$\begin {split}a(x)\end {split}$为丢失一把斧头的生成函数,$\begin {split}b(x)\end {split}$位丢失两把一样的斧头的生成函数,$\begin {split}c(x)\end {split}$位丢失三把一样的斧头的生成函数
对于样例来说: $\begin {split} a(x)&= x^4+x^5+x^6+x^7\\ b(x)&= x^8+x^{10}+x^{12}+x^{14}\\ c(x)&= x^{12}+x^{15}+x^{18}+x^{21} \end {split}$
再设$\begin {split}A(x)\end {split}$为丢失一把斧头的生成函数,$\begin {split}B(x)\end {split}$位丢失两把不同的斧头的生成函数,$\begin {split}C(x)\end {split}$位丢失三把不同的斧头的生成函数
对于样例来说:$\begin {split} A(x)& =a(x)\\ B(x)& =a^2(x)-b(x)\\ C(x)& =a^3(x)-3a(x)b(x)+2c(x) \end {split}$
解释一下$\begin {split} C(x) \end {split}$,首先随意的选择三个斧头(可以相同),然后减去选出两把相同的斧头和另一把斧头(也可以相同),但是三个相同的被减了三次,所以要加2
由于数据范围较大,需要用FFT或NTT优化
转载自joyouth
首先我们不难看出如果存在一个异或和为0的子集,那么先手必胜,否则先手必败
证明如下:
1、首先如果至少存在一个异或和为0的子集,那么一定存在一个异或和为0的子集使得选取之后剩下的数的任意子集异或和不为0
2、假设我们已经选取了一个异或和为0的子集,无论后手怎么做,我们总是有办法使得当前选取的子集异或和为0,因为后手无论是拿石子还是取石子之后,当前子集异或和不等于0,根据Nim游戏可知,此时先手一定有方案使得异或和为0
至此,我们证明了如果至少存在一个异或和为0的子集,先手必胜
那么题目就转化为求是否存在一个子集异或和为0,用线性基即可
第1种: $\begin {split}1+x+x^2+\cdots=\frac 1{1-x} \end {split}$
第2种: $\begin {split}1+x=\frac{1-x^2}{1-x} \end {split}$
第3种: $\begin {split}1+x+x^2+x^3+x^4=\frac{1-x^5}{1-x} \end {split}$
第4种: $\begin {split}1+x^5+x^{10}+\cdots=
\frac 1{1-x^5} \end {split}$
第5种: $\begin {split}1+x^2+x^4+\cdots=\frac 1{1-x^2} \end {split}$
乘在一起得到: $\begin {split}\frac 1{(1-x)^3}=(1-x)^{-3} \end {split}$
带入广义二项式定理得: $\begin {split} f(x)=\sum_{i=0}^{\infty} C_{i+2}^i \cdot x^i \end {split}$
当$\begin {split}i=n \end{split}$时第$n$项为 $\begin {split} x\cdot C_{n+2}^n \cdot x^n=C_{n+2}^2\cdot x^n\end{split}$
所以答案就为$\begin {split} ans=\frac{(n+1)(n+2)}2 \end {split}$