2025-9-15 总结
9-15
>=<
情况
- 时间:\(1.5h\)
- 预期:\(\text{AC}\)
- 实际:\(\text{AC}\)
知识点
- 贪心
思路
当我们处理一个操作的时候,对于条件 \(i\),等价于 \(A_{P_i}\le X-1\) 当且仅当 \(A_{Q_i}\le Y-1\) 而且 \(A_{P_i}\le x\) 当且仅当 \(A_{Q_i}\le Y\)。可以把它拆成两个约束条件看,所以我们只要让 \(A_{P_i}\) 和 \(A_{Q_i}\) 要么都符合条件,要么都不符合条件即可。
首先初始 \(A\) 所有元素为 \(1\),不断约束使得 \(A\) 符合条件。然后对于一个个条件不断更新:如果 \(A_{P_i}\) 大于 \(X_i\),那么 \(A_{Q_i}\) 就更新为 \(\max(A_{Q_i},Y_i+1)\)。同理 \(A_{Q_i}\) 大于 \(Y_i\) 也对 \(A_{P_i}\) 做类似处理。最后判断一下在 \(M\) 的值域之内即可。
Robot
情况
- 时间:\(2h\)
- 预期:\(\text{AC}\)
- 实际:\(\text{AC}\)
知识点
- 贪心
思路
先搞一个正方形给里机器人堵死,然后一直二分把机器人关在更小的矩形里,直到最后将其炸死。难点在于前面部分,因为造墙的速度和机器人移动速度其实是相同的,因此我们要造墙就必须有空缺。考虑以下思路,在 \(x=N,y=N\) 的位置造墙,但刚开始时造的墙之间都空一个位置。直到机器人走进某个墙附近时(可以设距离参数 \(D\)),我们再把对应区域的墙补完整即可。
MEXP
情况
- 时间:\(1h\)
- 预期:\(\text{AC}\)
- 实际:\(\text{AC}\)
知识点
- 思维
思路
我们发现其实 \(\text{MAXP}\) 的结果其实非常小,不会超过 \(37\),所以可以思考通过这个性质来做。我们通过分析可以得知 \(\text{MAXP}\) 只有可能是 \(2,3,5,7,11,13,17,19,23,29,31,37\) 这 \(12\) 个数,所以我们可以每次枚举结果,然后看哪些路径的 \(\text{MAXP}\) 为当前枚举的数。对于求解数量,我们每次 \(\text{dfs}\) 即可,复杂度十分小。
音乐节目
情况
- 时间:\(2h\)
- 预期:\(\text{AC}\)
- 实际:\(\text{AC}\)
知识点
- 数学
思路
我们可以很简单地得到 \(\text{dp}\) 的转移方程,但是会严重超时,所以我就想着能否优化,结果想了很久发现很难再优化使得时间复杂度变小,所以就想到了数学中的排列组合。然后开始推公式,然后发现其实可以分三种情况:
- \(n=m\),结果显而易见为 \(n\times k\);
- \(m=0\),同样思考一下可以发现为 \(0\);
- 可以得到以下公式:
所以这样就做出来了。
9-16
Cycle
情况
- 时间:\(1.5h\)
- 预期:\(\text{AC}\)
- 实际:\(\text{AC}\)
知识点
- 图论
思路
我们可以发现后面给出的数组组成的环一定最开始在同一个环里面,且只有环长度相等的环才有可能在一定,所以我们可以先统计出环,然后按照环的长度分类,我这里使用了 map<int, vector<vector<int>>> 来储存相同长度的环。然后再合并环,找可行的方案,不同长度的环是互不影响的,所以不用考虑其他环的情况。
9-19
Witnessing the Miracle / 见证奇迹
情况
- 时间:\(1h\)
- 预期:\(\text{AC}\)
- 实际:\(\text{AC}\)
知识点
- \(\text{dp}\)
思路
将状态设为 $dp_{i,j} 为前 \(i,j\) 成功匹配的方案数,这样就可以直接考虑向后转移。所以有以下三种情况:
- \(s=0,t=0\):\(dp_{i,j}=dp_{i-1,j}\);
- \(s=1,t=1\):\(dp_{i,j}=dp_{i-1,j}\);
- \(s=1,t=0\):\(dp_{i,j+1}=dp_{i,j-1}\)
所以这样就可以不用枚举重复的转移了。
Directed Tree
情况
- 时间:\(1.5h\)
- 预期:\(\text{AC}\)
- 实际:\(\text{AC}\)
知识点
- \(\text{dfs}\),\(\text{dp}\)
思路
观察到原题的条件相当于不存在 \(a_i\) 是 \(i\) 的祖先。考虑二项式反演,设 \(f_i\) 为有 \(i\) 个点不满足条件的方案数。再设 \(f_{x,i}\) 为 \(x\) 子树内有 \(i\) 个点不满足条件的方案数。对于结点 \(x\) 和它的一个儿子 \(y\),有转移 \(f_{x,i+j}\gets f_{x,i}\times f_{y,j}\)。
当然也可以存在子树内的结点连到它自己,有转移 \(f_{x,i}\gets f_{x,i}+f_{x,i-1}\times(siz_x-i)\) 剩下的未被钦定的点随便匹配即可,\(f_i=f_{1,i}\times(n-i)!\)。
所以得到最后的答案为:
Erase Balls 2D
情况
- 时间:\(1.5h\)
- 预期:\(\text{AC}\)
- 实际:\(\text{AC}\)
知识点
- \(\text{dp}\)
思路
若一个合法的剩下的球集合为 \(S\) ,考虑记 \(f(S)\) 为 \(S\) 中满足以下条件的球的集合:
- 操作一次不会删除 \(S\) 中其它球,即没有其它球与 \(i\) 有偏序关系。
我们发现 \(f(S)\) 与 \(S\) 之间是一一对应的。对 \(f(S)\) 中的所有点做一次操作,即可从 \(f(S)\) 构造唯一合法的 \(S\)。接下来分析具体如何计数 \(f(S)\)。按横坐标从左到右编号。记 \(f_i\) 为考虑到第 \(i\) 个球,且 \(f(S)\) 中最后一个球是 \(i\) 的方案数。则 \(i\) 可以从 \(j<i\) 转移,当:
- 两球之间没有偏序关系,即 \(y_j>y_i\)
- 两球之间没有可以操作并不影响 \(S\) 的球 \(k\)。具体地,对矩形 \((j,i)×(y_i,y_j)\) 内的球集合 \(T\),不存在一个球与 \(T\) 内其他球没有偏序关系,所以可以枚举 \(k\),并使用二维前缀和检查这个条件。
所以这道题就以 \(O(n^3)\) 的复杂度做出来了。
9-22
Pass to Next
情况
- 时间:\(1.5h\)
- 预期:\(\text{AC}\)
- 实际:\(\text{AC}\)
知识点
- \(\text{dp}\)
思路
我们先可以假设第 \(i\) 个人往右传了 \(x_i\) 个球,所以传球结束后第 \(i\) 个人手里有 \(a_i-x_i+x_{i-1}\) 个球。所以我们要求的答案为 \(\prod_{i=1}^{n}(a_i-x_i+x_{i-1})\),所以我们假设这个结果为 \(f_n\),所以得到:
所以我们假设 \(x_{n}f_{n}\) 的结果为 \(g_n\),所以又可以得到:
由于我们 \(x_i\) 的取值范围为 \(0\sim a_i\),而 \(f_{n-1},g_{n-1}\) 和 \(f_n,g_n\) 是互不影响的,所以我们可以得到:
最后由于该问题并不是一个序列而是一个环,所以要思考如何初始化才能算出正确答案。由于不好直接初始化,所以我们考虑用容斥,直接将 \(f_1\) 和 \(g_1\) 分别赋值为 \(0\) 或 \(1\),然后就可以了。
Rectangle Coloring
情况
- 时间:\(1.5h\)
- 预期:\(\text{AC}\)
- 实际:\(\text{AC}\)
知识点
- 贪心
思路
我们最开始想到,因为四个角都需要填,所以可以想到每条边直接选最小的两个数,但是有一种特例,因为当我们选了 \(D_a,D_b,U_c,U_d,L_e,L_f,R_g,R_h\) 并且 \(a<b<c<d,e<f<g<h\) 的话中间会有空白,所以我们应该有一组对边选三个数。所以我们把这种的方案数与前面有相交的方案数取最小值即可。
Yet Another MEX Problem
情况
- 时间:\(2h\)
- 预期:\(\text{AC}\)
- 实际:\(\text{AC}\)
知识点
- 线段树
思路
我们看到这个可以想到用线段树,我们可以每次将区间 \(0~a_i+1\) 都加上 \(1\),但是如果一个前缀的 \(\text{mex}\) 为 \(a_i-1\) 则加上 \(a_i\) 后 \(\text{mex}\) 值发生变化,所以我们要把为 \(a_i-1\) 的清空,所以最后的答案为清空后的最大值。

浙公网安备 33010602011771号