省选测试

A. 序列

变化次数线段树很不好维护。
不妨考虑根号做法,暴力一部分。
发现对整块的修改,add操作单调性不变,按w+add sort后次数的变化一定在前缀,所以暴力保持整块内部有序。
修改时两边重构,取max时lower_bound,然后在该位置差分,更新max标记时要减去当前的add标记,相当于max是相对于初始重构序列的。
单点查询时直接重构所在块。
这样做复杂度是\(n\sqrt n logn\)的。我的代码调块长卡不过。
瓶颈在于二分,发现有效修改位置一定是单调不降的,所以对每个块维护单调指针,重构时移动到块首。由于操作最多重构两个块,块长\(\sqrt n\)这样做复杂度是对的\(n\sqrt n\)

暂咕.

之前某次没放出来的题解orz

T1.解方程

求方程\(\sum\limits_{i=1}^{n}x_i=m\)的解个数
如果没有限制,可以转化问题为把m个无差别物品放入n个有差别非空箱子的方案数。
由挡板法\(\binom{m-1}{n-1}\)
对于限制\(x_i \geq A_i\),可以从m个物品中先拿出\(A_i-1\)个,最后把这些物品钦定放到\(x_i\)上,保证一定满足。
对于限制\(x_i \leq A_i\),由于该类限制很少,暴力枚举所有不合法情况然后做集合容斥。
模数是合数没有逆元,Exlucas计算,最后用Crt合并。预处理需要的前缀积可以快不少
注意\(a^{\varphi (m)}\equiv 1(mod\ m)\),所以用快速幂计算逆元需要求\(\varphi\)

B.宇宙序列

递推式是异或卷积可以FWT,不断DFT自乘IDFT能做到\(O(pn2^n)\)
有个结论,点值表达式的前缀和IDFT后可以得到系数的前缀和。
由于模数很小,所以可以倍增预处理所有值变换次幂次带来的贡献。
\(f[x][i]=\sum\limits_{j=0}^{2^i-1}x^{2^j}\)
\(f[x][i]=f[x][i-1]+f[x^{2^{2^{i-1}}}][i-1]\)
枚举每个点值,不断更新累加前缀和。
最后IDFT得到答案。

C.exp

大神期望题
30pts:从末状态倒推到给定状态,对于每个状态\(f[s]=\frac{\sum\limits_{i=1}^{n}f[to]+cost}{n}\)
正解:首先断环成链。由于倒推需要枚举具体的状态,试着存概率正推
发现有区间dp的性质。
\(f[l][r]\)为考虑了区间\([l,r]\)除了r都被选的期望。
\(g[l][r]\)同理为概率
g的需要枚举上一个除r以外o的位置转移,而每个位置的概率不同,所以再定义\(p(l,r,k)\)为区间[l,r]内r未选且k最后一个被选的概率。
所以\(g[l][r]=\sum\limits_{i=l}^{r-1}p(l,r,k)\)
\(f[l][r]=\frac{1}{g[l][r]}\sum\limits_{i=l}^{r-1}p(l,r,k)(f[i][k]+f[k+1][r]+\frac{k-l}{2})\)理解加权平均
现在问题在于求出p,设[l,k-1]中有x个o,[k+1,r-1]中有y个o,
\(p(l,r,k)=\binom{x+y}{x}\left ( \frac{k-l+1}{r-l+1} \right )^{x+1}g[l][k]\left ( \frac{r-k}{r-l+1} \right )^yg[k+1][r]\)
组合数两部分交叉的顺序,不用排列的原因是内部转移的时候考虑了顺序(枚举k),然后乘上概率。

posted @ 2020-01-17 07:58  hzoi_yzh  阅读(125)  评论(0编辑  收藏  举报