河南萌新联赛2024第(四)场 题解
A. 该出奇兵了
$tarjan \(割点板子题,处理完割点以后\)dfs$ 求出每个点被删掉以后对答案的最小贡献
code:
1 |
|
B. 小雷的神奇电脑
从 \(m - 1\) 位遍历到第0位,每一位都开两个 \(vector\) ,一个存当前位为 \(0\) 的数,一个存当前位为 \(1\) 的数,并且数组中的元素从 \(m - 1\) 为到当前位的值都相同,最多需要开 \(2^{\log n}\) 个 \(vector\),用 \(dfs\) 比较好维护。
code:
1 |
|
C. 岗位分配
组合数学隔板法,假设剩下\(k\)人没有被分配岗位,则总方案数为
\((1 + \sum_{i=0}^{k-1} \sum_{j=0}^{\min(i, n-1)} \left( C(i, j) \times C(n, j + 1) \right) )\mod \text{MOD}\)
code:
1 |
|
D. 简单的素数
试除法判断质数
code:
1 |
|
E. AND
线性筛质数,可发现只有区间包含 \(2\) 时,\(AND\) 和结果才可能为 \(0\)
code:
1 |
|
F. 小雷的算式
简单模拟,排序后输出
code:
1 |
|
G. 循环字符串
用线段树维护正反哈希区间,当 \(hash(l + x, r) == hash(l, r - x)\) 时,\(x\) 为该区间的一个循环节,每个区间最大循环节为区间长度$ len$,试除枚举 \(len\) 的因子,找到最小循环节
code:
1 |
|
H. 聪明且狡猾的恶魔
博弈题,当只剩下 \(n-1\) 号和 \(n\) 号两个恶魔时,无论n号恶魔是否同意,\(n-1\) 号恶魔一定会获得所有金币,所以 \(n\) 号恶魔不会让 \(n-1\) 号恶魔当上老大,再往前推,剩下 \(3\) 个恶魔时,\(n\) 号恶魔一定支持 \(n-2\) 号恶魔,并且 \(n-2\) 号恶魔为了获得 \(n\) 号恶魔的支持,会支付1枚金币,因此,\(n-1号\) 恶魔不会让 \(n-2\) 号恶魔当上老大,层层递推,最终推出 \(1\) 号恶魔能获得的最大金币数
code:
1 |
|
I. 马拉松
\(bfs\) 处理出 \(x\) 到 \(y\) 的马拉松路径,再用 \(dfs\) 计算出以 \(x\) 为根的子树除去路径后的节点数和以 \(y\) 为根的子树除去路径后的节点数,两数相乘即为答案
code:
1 |
|
J. 尖塔第四强的高手
\(lca\) 板子题,每次查询中处理出点集的最近公共祖先,输出即可
code:
1 |
|
K. 比赛
树状数组模板题,分别计算每个点左右两边大于等于、小于等于、等于该点的数的个数,做一下容斥即可
code:
1 |
|
L. 抓字符
概率 \(dp\),计算出非严格单调上升子序列的概率和非严格单调子序列的概率以及只有一种元素子序列的概率,容斥求出答案
code:
1 |
|