Solution Set - 杭电多校 2022 Day4 一句话题解
A:设 \(f_{i,j}\) 表示 \([i,j]\) 改成合法括号序列的方案,\(g_{i,j}\) 表示 \([i,j]\) 改成合法括号序列并且最外一层是 \(i,j\) 这两个括号的方案,区间 DP 即可,时间复杂度 \(O(n^3)\),因为跑不满可过。
B:将边权为 \(\{0,0\}\) 的环进行缩点,对第一维跑出最短路 DAG,DAG 上 dfs 一次即可。
C:设放置水晶前缀和的数组为 \(a_i\),可以改写出三种不等式的形式,分别是:
- \(a_i-a_{i-1}\ge 0\);
- \(a_{i+k}-a_{i-k-1}\ge p_i\);
- \(a_{R_i}-a_{L_i-1}\le B_i\)。
是差分约束系统,建图跑 SPFA 即可。
D:输出 No 即可,证明不会,建议去看官方题解。
E:考虑双指针,因为每一次往后移是单调的,使用向量乘矩阵可以做到单次移 \(r\) 是 \(O(m^2)\),但是移 \(l\) 不行,实际上也很暴力,使用线段树查询 \([l+1,r]\) 的答案即可。
真不想写,代码鸽了。
F:据说是模拟题,队友过了,不想了。
G:路径一定是向上跳之后向下走,二分确定路径的跳点即可。
I:首先将 \(d_i\) 分 \(>0\) 和 \(<0\) 考虑,\(d_i>0\) 一定先打,\(d_i<0\) 一定后打。
先考虑 \(d_i\) 非负的情况,考虑到如果要满星打过第 \(i\) 关,需要 \(s_i-d_i\) 的能力值,此时一路打下来能力值单调不降,所以首先按照 \(s_i-d_i\) 排序,注意到 \(s_i-d_i\) 过大的时候会导致打不动然后摸个 \(d_i\) 跑路,而让前面的更优。
用一个堆记录下来可能摸个 \(d_i\) 跑路的关卡。考虑从后往前地放弃关卡,分两种情况:
- 可以搞定,那么我们可以将这个关卡暂时先放进堆内,此时可能存在这个关卡牺牲掉满分然后保住另一个关卡。
- 不能搞定,我们先考虑牺牲堆中的关卡,假设堆中最大的关卡是 \(j\),很显然牺牲掉 \(d\) 更大的关卡更优。
\(d_i<0\) 类似,做完了。
哈哈好口胡。
J:遇到博弈题可以考虑从结束情况开始。
当 \(n=2m\) 时,局面已经固定,数出交点个数即可。
当 \(n=2m-1\) 时,存在两种情况可以使 Bob 操纵奇偶性:
- 奇数条斜率相同的直线,平行与新开一个斜率。
- 奇数条直线交于一个点,新开一个斜率,过这个点还是不过这个点。
此时 Bob 必胜,否则 Bob 无法改变奇偶性,数出交点个数即可。
当 \(n=2m-2\) 时,Alice 一定不希望使 Bob 在 \(n=2m-1\) 的时候直接胜出,需要删除掉使 Bob 操纵奇偶性的情况,可以扫一遍求出这条直线,加上之后运行 \(n=2m-1\) 的解法即可。
当 \(n=2m-3\) 时,Bob 希望不使 Alice 操控奇偶性的情况,考虑如下情况:
- 存在一个被偶数条直线经过的交点,这个时候只要随意添加一条直线 Alice 就操作不了了,Bob 必胜。
- 存在一个被奇数条直线经过的交点,这个时候只要随意添加一条直线 Alice 就操作不了了,因为可以证明不会有多个这样的点,Bob 必胜。
- 剩下的就是平行,需要判断此时直线的个数,如果为偶数则 Alice 必胜,因为 Alice 只要画与 Bob 平行的直线就能搞定,否则 Bob 必胜。
当 \(n=2m-4\) 时,Alice 唯一能赢的机会就是平行,加一条运行 \(n=2m-4\) 的解法即可。
当 \(n\le 2m-5\) 时,Bob 只要制造交点就能在 \(n=2m-3\) 时薄纱 Alice,Bob 必胜。
K:【模板】线性基,证明请看官方题解。

浙公网安备 33010602011771号