9.21 小记
9.21 模拟赛
T1 是个普普通通的线段树。额就小白逛公园那思路。线段树上多维护几个信息,然后左右子树合并就行了 原题
T2 也不难,就大力分类讨论就行了。(那你还调了那么久 (╯▔皿▔)╯ 原题
T3 是个有趣的树上概率 DP ,它并不是树上高斯消元 原题
设 \(f_i\) 为从 \(i\) 走到它父亲的期望步数。
\(\displaystyle f_p=\frac {1}{d_p}+\frac {1}{d_p} \sum_{v\in son_u} (1+f_v+f_p)\)
第一项代表直接向他父亲走,第二项代表先向他儿子走,再往回走
\(d_p\times f_p=1+(d_p-1)+(d_p-1)f_p+\sum_{v\in son[p]} f_v\)
\(f_p=d_p+\sum f_v\)
\(f\) 就是个可求的东西了
然后我们设 \(g_p\) 为从 \(p\) 的父亲走向 \(p\) 的期望步数
\(\displaystyle g_p=\frac 1 {d_{fa}} +\frac 1 {d_{fa}} \sum _{v\in son[fa],v\not =p} (1+f_v+g_p)+\frac 1 {d_{fa}} (1+{g_{fa}+f_{fa}})\)
第一项就是直接向下走,第二项是先向兄弟走,再返回向自己走,第三项就是先向爷爷那里走,再向下走
然后像上面一样化简
\(g_p=d_{fa}+\sum_{v\in son[fa],v\not = p} f_v +g_{fa}\)
然后考虑每条边能做出的贡献。其实就是 \(\sum \frac {siz_p} n \times \frac {(n-siz_p)} n \times(f_p+g_p)\)
除以一个 n 就是考虑每个点被选中的概率。
T4 就是个二维数点,因为光顾着调 T2 了都没时间看 link
就是可以考虑对于每个询问,它给出的一堆点会将整个数轴分成若干段,然后如果一条线段被分出的区间包含,那他就是不行的。然后你可以离线,然后对分出的区间按照左端点排序,然后把所有左端大于等于这个左端点的线段的右端点扔进树状数组(有点抽象,参考二维数点),然后顺便在树状数组里查
[COCI2019-2020#4] Spiderman
首先,小于 \(K\) 的值是不可能给别的 \(i\) 贡献答案的,理由还挺显然的。
然后我们对于每个被除数减掉 \(K\) ,然后就相当于求能整除的个数。我们可以用埃筛来处理
需要注意的是当 \(K=0\) 时,一个数可能给自己做出贡献所以要删掉。
然后是把相同的数压到一起会显著减小常数(Zpair 给我开大时限了所以我没改)
[COCI2019-2020#4] Holding
最给人提示的是 \(r=n\) 的部分分。
对于这个部分分,我们可以设 \(f_{i,j,k}\) 表示只在 \(1\sim i\) 和 \(l\sim j\) 的范围内进行交换,花费为 \(k\) 的最大能够减少的负债。
如果当前的 \(i\) 和 \(j\) 交换,那么 \(f_{i,j,k}=f_{i-1,j-1,k-(j-i)}+a_j-a_i\)
如果现在他们不交换,那么 \(f_{i,j,k}=\min\{f_{i-1,j,k},f_{i,j-1,k},f_{i-1,j-1,k}\}\)
那么我们现在考虑 \(r\not = n\) 的部分。
我们可以仿照上面的做法,设 \(g_{i,j,k}\) 为只在 \(i\sim n\) 和 \(j\sim r\) 之间交换,花费为 \(k\) 的最大能够减少的负债。
转移方式和上面 \(f\) 的转移是一样的,就不用我多说了吧 QAQ
然后求出这两个数组之后我们需要分别求出前缀的最大值,然后枚举从 \(l\sim r\) 中从哪里开始跟左边交换,从哪里开始跟右边交换,并且枚举两边的最大花费,然后把 \(f,g\) 拼在一起取最大值,然后和 \(l\sim r\) 之间的数的和一减就完事了
[COCI2019-2020#4] Nivelle
哇复制一下就直接有 link 了诶
我们可以枚举出现的颜色种类数,然后二分长度,找到可行的最长长度,二分的过程中用滑动窗口维护区间的颜色种类数。
废话
但是模拟赛只能说比前几次状态好了点,但不多
嗯,如果题目比较麻烦的话我可能会自乱阵脚的吧。这不是什么好事吧。
不过我 T2 调出来了,要是调不出来就又是没好的一天。
喵,喵,喵
无法明辨的歉意 抽离思绪的彼方
未曾感知心绪 如梦似影玩笑般谢场
早已厌倦暗于 幕帘之下疮痍的假象
庆幸终末旅程 只我一人掩饰着怯场
请 放任所有不知情者未命名辞章
飘散零落书签 浸透沾满泪水的脸庞

浙公网安备 33010602011771号