2021牛客暑期多校第六场¶
排名 | 当场过题数 | 至今过题数 | 总题数 |
---|---|---|---|
37/1100 | 5 | 11 | 11 |
A¶
solved by Bazoka13
题意¶
给你一堆半平面以及半平面的移动方向,每秒半平面会向这个方向移动一个单位,
题解¶
我们会发现随着时间的增加,半平面中有的边就会被缩成一点,因此我们可以
B¶
upsolved by JJLeo 2sozx
题意¶
给定一个图,每条边有个出现概率
设
询问
题解¶
考虑矩阵树定理,对于特定的
考虑设
对于新的行列式 (删掉最后一行最后一列的基尔霍夫矩阵),我们设其为
首先和
相似的矩阵特征多项式相同: 因此我们考虑将
相似到一个方便求特征多项式的矩阵,上海森堡矩阵 的定义为:
- 对于所有
, 。 我们先考虑如何将
为相似上海森堡矩阵: 因为是相似,所以每次初等行变换相当于右乘一个初等方阵,需要再左乘一个它的逆,三种初等方阵的逆方阵效果如下:
右乘 效果 左乘 效果 交换第 行和第 行 交换第 列和第 列 第 行乘以 第 列乘以 第 行乘以 加到第 行上 第 列乘以 加到第 列上 对于第
列,我们用 把 ( ) 全部消成 ,每进行一次初等行变换,立刻进行依次对应的初等列变换,注意我们每次都是操作第 行和第 行,因此初等列变换只会影响第 列和第 列,其中 ,因此不会影响到第 列。 这样我们就在
的时间内相似到了上海森堡矩阵 ,设 是其 阶顺序主子式,其中 ,我们依次计算 : 对于
,按第 行展开,第 行只有两个数,如果选 ,那么剩下的即为 ,否则只能选 ,那么第 行也只剩两个数,如果选 ,那么剩下的即为 ,否则继续递推,枚举第一个选 的 ,那么剩下的的即为 ,注意要乘上展开定理中的 。 其中只有对角线上有
,其它都不带 ,因此递推的总复杂度为 。
最后,此题 corner case 不少,等比数列求和时注意公比是否为
C¶
upsolved by 2sozx
题意¶
题解¶
删掉所有
证明:
-
时 -
时 -
易证这两个条件下
一定不相等
D¶
upsolved by JJLeo 2sozx
题意¶
一个数开始为
题解¶
考虑一个推期望的式子
答案可以通过 cdq 分治计算,对于一层的计算,首先计算右半的答案,然后用 FWT 转移到左侧即可。
注意同一层中前缀相同,因此 FWT 的长度可以相应减少,从而复杂度是
E¶
upsolved by JJLeo 2sozx
题意¶
起始有一个树根,每次操作选择一个节点
题解¶
通过 dfs 序转化成序列问题,只不过我们通过改变 dfs 顺序使得这个序列比较好维护。
具体来说,维护每个点子树 dfs 序中最后一个点的下一个点
,以及其第一个儿子。 这样,每次新增把新点当作 的一个新儿子即可,每个点的 永远不变,新增时为其初始化为下一个点即可。
将每个点的值映射到 long long
值域内,使用替罪羊树维护每个点的权值,一旦不平衡就重构。
替罪羊树的重构不影响节点间的相对位置,因此我们只需要对每个颜色维护一个平衡树,每次加点的时候向对应颜色的平衡树加点即可,查询即为找到依靠
模板里 KDTree 重构没有中序遍历,因为本来就是乱搞,这里不是乱搞是正经的排序,要中序遍历。
F¶
solved by JJLeo 2sozx Bazoka13
题意¶
西内
题解¶
西内
G¶
solved by JJLeo 2sozx
题意¶
设
现在给定
题解¶
点
另外,还要加上 min_25 筛第一部分的复杂度。
J¶
upsolved by JJLeo 2sozx
题意¶
一个无向连通图,如果联通块个数为奇数,则这个联通块
题解¶
2sozx's solution¶
联通块大小为偶数的不用考虑。
联通块大小为奇数时,我们可以证明一定只删除一个点最优。考虑删除哪个点,如果点非割点,则可以任意删除,否则看这个割点链接的其余联通块是否全为偶数,如果全是偶数则可以删除,否则不可以删除,复杂度为
判断割点其余联通块是否为偶数时可以在
JJLeo's solution¶
否则,对于任意一种方案,一定可以将其变为将其中奇数个点拆成孤立点,剩下连通块中的边不动。
可以证明最优方案只需要选择一个点将其变为孤立点:
考虑建出圆方树,将选择的孤立点拿出来建虚树,显然如果只选择一个叶子节点也是合法的,且其中一部分之前还删掉了一些点,而选择它们在一起组成一个偶数连通块,因此答案更优。
因此,我们建出圆方树,依次考虑每个点删掉后的答案即可。只需要考虑删掉这个点后剩下连通块都是偶数个点的那些点,当然就算全考虑答案也是对的,因为其它情况答案一定不优。
K¶
upsolved by JJLeo 2sozx
题意¶
一棵
题解¶
这个问题显然可以用线段树做,维护两端选 / 不选的最大值进行合并,链可以用然后用重链剖分解决,复杂度是
本题即为猫树在点分树上的拓展,求出每个点到点分树上每个祖先的 (不考虑祖先的) 两端选 / 不选的最大值,之后每次询问找到这两点在点分树上的 lca,显然这是它们路径上的一个点,用预处理出来的值
求 lca 要用欧拉序 + ST 表来预处理。总复杂度为
记录¶
0h:开始看I,ZYF想了想直接秒了,看大家都过了F,CSK ZYF看F,MJX看H,想了半天F,不会做,CSK开始直接冲A的板子暴力,MJX喂ZYF H,ZYF直接开写扫描线开冲。CSK数组开小了,然后发现暴力确实会T(只能说几何常数起飞)。ZYF写完WA了,开始De
1h:ZYF和MJX观察ZYF代码,太tm对了,MJX开始写垃圾对拍,虽然对拍完全不对,但是找到了错误的数据(x)。CSK改了改常数继续冲A模板暴力。ZYF发现就最后输出的横纵坐标反了,其它完全正确,寄!
2h:自闭F,ZYF写了个完全假的F,然后开始和出题人对线
3h:前半小时继续对线,后半小时开始换题,考虑G,MJX和ZYF开始疯狂讨论,搞了个式子出来,不会优化。然后开始测暴力的复杂度(x。ZYF把复杂度写出来,发现就是没有优化的杜教筛的复杂度,想到直接前
4h:ZYF过了,然后发现F太傻逼了,CSK继续改A,ZYF先写F,直接过了。开始二分A的范围,冲冲冲!
总结¶
输出一定不要反
MJX对拍写的准点(x
Dirt¶
A(+10):开始给了两发暴力,常数大寄了,数组还开小了,然后二分的返回值错了,但是过了大多的样例,最后TLE因为二分次数太多了(罚的好啊,+100都行)
H(+1):经典x, y写反了