0%

2021.11.05模拟赛

I will never go

2021.11.05 模拟赛

A. 宝藏

暴力怎么做,暴力是不是二分,二分,主席树

显然有主席树可以 O(log⁡n)O(\log n) 检验一个位置是否满足条件,再想一下发现位置有单调性,枚举长度顺序检验即可

复杂度 O(nlog⁡n+q)O(n\log n+q)

B. 寻找道路

震惊,无良出题人脚造数据竟使暴力满分

先把前导零去掉,剩下的部分先保证长度最短,然后保证 11 的位置尽可能靠后

从 11 开始 BFS 找到所有前导零的点,然后把长度相同的一起转移,先转移 00 再转移 11 的边

注意要一起转移,否则可能会有某个点用 11 更新了原本能用其他点的 00 能更新的点

C. 猪国杀

大力计数

首先我们选的卡牌必然是排完序的一个前缀

如果我们能求出来 ii 个数字 每个数字不超过 jj 总和不超过 kk 的方案数 fi,j,kf_{i,j,k}

枚举一个数字表示当前选的最大值为 jj 有 ii 个严格小于他的, tt 个等于 jj 的,选了 kk 个 jj

方案为 ∑i=0n∑j=1A∑k=1n−ifi,j−1,m−kj∑t=kn−i(A−j)n−u−t(ni)(n−it)\sum\limits_{i=0}^{n}\sum\limits_{j=1}^{A}\sum\limits_{k=1}^{n-i}f_{i,j-1,m-kj}\sum\limits_{t=k}^{n-i}(A-j)^{n-u-t}\binom{n}{i}\binom{n-i}{t}

组合意义比较明显,问题是我们要求的是期望,为啥只用计算方案数?

因为方案数有重复统计的,注意到我们虽然钦定 jj 是选的数最大的,但其实他不是

因为 fi,j−1,m−kjf_{i,j-1,m-kj} 只要求总和小于等于 m−kjm-kj 有可能选完之后后面还能选一些数

而对于固定个数列,因为我们对比当前选的数大的数没有限制,所以每个被选的数都当了遍 “最大值”,所以这样正好计算了选的个数次

D. 数树

树哈希可过

考虑状压 设 dpx,Sdp_{x,S} 表示在大树上第 xx 个节点儿子对应小树的状态 SS

考虑如果让 vv 对应 ii 则 vv 的儿子也应对应 ii 的儿子

预处理小树儿子集合转移即可,最后需要除去小树自同构的方案数

复杂度 O(nm2210)O(nm^22^{10})