Bitwise Xor
我们可以发现一个序列中的最小的异或值是两个大小相邻的数的\(xor\)取\(min\)。
那么我们对序列排序。
只需要计算相邻的\(xor\)是大于等于\(k\)的方案。
\(dp[i]\)是以\(i\)结尾最小\(xor\)大于\(K\)的方案。
然后我们可以类似于用树状数组来搞最长升降转移。
这次用\(trie\)来转移。
MOD Problem
大水题
\[\begin{aligned}
ans&=\sum\limits_{i=1}^{n}n\ mod\ I\&=\sum\limits_{i=1}^{n}n-i\lfloor\frac{n}{i}\rfloor\&=n^2-\sum\limits_{i=1}^{n}i\sum\limits_{j|i}^{n}I\&=n^2-\sum\limits_{j=1}^{n}\sum\limits_{i|j}i\&=n^2-\sum\limits_{j=1}^{n}\sigma(i)\\end{aligned}
\]
然后线筛。
平方串
\(dy\)讲过的原题。
貌似是。。
还是用插点法,枚举长度\(len\),每\(len\)个插一个点。
发现每次两个串必然是越过两个插入的点的。
然后就找两个点的\(lcp\)和\(lcs\)就可以了。
这样能够确定经过相邻两个特殊点的平方串左右端点的范围。
然后用类似\(hash\)的方法来统计答案就行了。
Conjugate
联赛原题吧。
分别考虑每一堆和第一堆做贡献。
使得某一堆在第一堆之前做贡献,可以发现此时其他堆是无效的。
那么最终的答案就是:
\[ans=1+\sum\limits_{i=2}^{n}\frac{a_i}{a_1+a_i}
\]
湖人
感觉还是原题。
想不起来是哪里看到的了。
非别考虑每一个点自己终结自己的期望。
那么答案是:
\[ans=\sum\limits_{i=1}^{n}\frac{1}{d(i)}
\]
可以用一个\(min\_25\)筛来做。
虽然我还没想懂怎么做。
Game with Marbles
先求出摸到一个蓝球之前摸到绿球的期望个数。
如果摸到了红的可以扔掉重新膜,所以认为红球其实是不存在的。
那么有:
\[E=\frac{G}{B+G}(E+1)
\]
所以:
\[E=\frac{G}{B}
\]
一个蓝球对应这么多绿球,那总共的绿球就是\(\frac{KG}{B}\)个咯。
对红再单独计算。
可以计算每一个红球。如果这个球没,没有被摸到,概率就是\(\frac{B}{B+1}\)
所以一个球的贡献就是\(1-\left(\frac{B}{B+1}\right)^K\)
游戏
这个就是贝叶斯公式了。
我们把每一个点左右两端确定的情况作为这个点期望的取决标准。
用线段树和两个矩阵来维护这些区间。
每个点的矩阵维护贝叶斯公式划出的分母和。
AGC035D
发现其实是消除掉一个数给两边加上。
那么每一个权值都要乘一个系数上去。
做个区间\(dp\)。
设\(dp[l][r][x][y]\)表示做右端点的系数为\(x,y\),区间\([l+1,r-1]\)已经被消除的最小答案。
枚举中间点合并区间。
\[dp[l][r][x][y]=\min\limits_{mid=l}^{r}dp[l][mid][x][x+y]+dp[mid][r][x+y][y]-(x+y)A_{mid}
\]
operation
联赛原题。
由于除以二的操作并不会进行很多次。
所以我们可以直接按度数轻重点划分。
概率论
听过的,写在某个生成函数里面了。
https://www.cnblogs.com/Lrefrain/p/12274363.html
这篇的最后一个。
Jiry Matchings
经典的方法
如何用\(FFT\)快速求出重链划分情况下的所有贡献。
其实就是从叶子对所有轻儿子分治\(FFT\),然后再从一条重链上分治\(FFT\),把一条重链的贡献分治\(FFT\)出来。
这个时候链顶成为别人的轻儿子,再对这个操作递归即可。
小星星
做过的题。
https://www.cnblogs.com/Lrefrain/p/11644600.html
子集反演嘛。
Ribbons on Tree
考虑容斥。
我们如果去掉一些边集,就相当于一个连通块划分,同时从连通块中选择一个代表点的方案。
这是\(prufer\)序列的结论,详情见数树那个题
这个东西如果用题解写的方法就太麻烦了。
我们可以直接把第二维度压掉
直接设\(dp[x][0/1]\)表示第\(x\)的点的子树中\(x\)所在连通块是否存在代表点的方案数。
原文地址:https://www.cnblogs.com/Lrefrain/p/12656405.html