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}\) 的转移方程,但是会严重超时,所以我就想着能否优化,结果想了很久发现很难再优化使得时间复杂度变小,所以就想到了数学中的排列组合。然后开始推公式,然后发现其实可以分三种情况:

  1. \(n=m\),结果显而易见为 \(n\times k\)
  2. \(m=0\),同样思考一下可以发现为 \(0\)
  3. 可以得到以下公式:

\[\sum^{m}_{i=1}i\times(^{n-i-1}_{m-i})\times(\frac{1}{2})^{n-i} \]

所以这样就做出来了。

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\) 成功匹配的方案数,这样就可以直接考虑向后转移。所以有以下三种情况:

  1. \(s=0,t=0\)\(dp_{i,j}=dp_{i-1,j}\)
  2. \(s=1,t=1\)\(dp_{i,j}=dp_{i-1,j}\)
  3. \(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)!\)

所以得到最后的答案为:

\[\sum_{i=0}^n(-1)^if_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\) 转移,当:

  1. 两球之间没有偏序关系,即 \(y_j>y_i\)
  2. 两球之间没有可以操作并不影响 \(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\),所以得到:

\[f_n=a_n\prod_{i=1}^{n-1}(a_i-x_i+x_{i-1})-x_n\prod_{i=1}^{n-1}(a_i-x_i+x_{i-1})+x_{n-1}\prod_{i=1}^{n-1}(a_i-x_i+x_{i-1}) \]

所以我们假设 \(x_{n}f_{n}\) 的结果为 \(g_n\),所以又可以得到:

\[f_n=a_nf_{n-1}-x_nf_{n-1}+g_{n-1}\\ \quad\\ g_n=a_nx_nf_{n-1}-(x_n)^2f_{n-1}+x_ng_{n-1}\\ \]

由于我们 \(x_i\) 的取值范围为 \(0\sim a_i\),而 \(f_{n-1},g_{n-1}\)\(f_n,g_n\) 是互不影响的,所以我们可以得到:

\[f_n=(a_n)^2f_{n-1}-\frac{a_n(a_n+1)f_{n-1}}{2}+(a_n+1)g_{n-1}\\ =\frac{a_n(a_n+1)f_{n-1}}{2}+(a_n+1)g_{n-1}\\ \quad\\ g_n=\frac{(a_n+1)(a_n)^2f_{n-1}}{2}-\frac{a_n(a_n+1)(2a_n+1)f_{n-1}}{6}+\frac{a_n(a_n+1)g_{n-1}}{2} \]

最后由于该问题并不是一个序列而是一个环,所以要思考如何初始化才能算出正确答案。由于不好直接初始化,所以我们考虑用容斥,直接将 \(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\) 的清空,所以最后的答案为清空后的最大值。

posted @ 2025-09-15 11:49  小熊涛涛  阅读(16)  评论(0)    收藏  举报