ZJCPC选拔 Round1

最开始觉得每道题都有难度,但其实最后除了最后一题我都会做。
最开始摸鱼了 40 min,罚时太差,还是不能很快进入状态 :(
第三题挺遗憾的,寒假做过算这个最大子段平均值的题,我一眼看出字典树上每个节点维护一个单调栈。没注意到空间只有 64M,之后看题解说二分答案立马就懂了...难怪答案只保留整数:)

强连通计数

显然这是一个外向基环树森林。不是环的每个点贡献就是 \(1-p_i\),是环的考虑这个环最终存不存在。

子集整除

刚开始觉得很神秘,做了第四题再看,这不就是个 dp, 状态记录一下余数

最大平均区间

:L
其实就是缝合了两个题,找 \(p_i \oplus p_j\le k\) 我在牛客寒假集训营做过,找最大子段平均值是某场 abc F 题。但是那个 abc 答案是输出浮点数,二分精度误差太大。没仔细想为什么答案只保留整数,不然应该能想到二分的,代码还好写()

合法数对

二进制下,固定前 k 位和上界相同,简单计数一下就行了:)

异或

神秘题。递归到第零层,发现系数和组合数奇偶性相同。
打表发现杨辉三角的二的幂层只有首位两列是 1。就暴力递归,预处理前 500 层就行了。

删数字

好题!因为我不会做:)
如果删除限制是外向树,每次只能删树根。如果是森林,不同的树的操作顺序没有影响。答案就是 \(\prod \frac{a_i}{\sum_{j \in subtree_i} a_j}\)
枚举每条边消失或者外向。没有边减去一条边外向加上两条边外向...
考虑 \(dp[u][s]\) 表示 \(u\) 的子树权值和为 \(s\) 的容斥情况。因为合并之和 u 的子树权值和有关,作一个树上背包一样的 dp 就行。