Loading

省选集训

Lesson 1

QOJ9798

  • 一个 \(n^3\) 做法是考虑 \(f_{i, j, k}\) 表示前 \(i\) 个,最后一个数是 \(j\),和为 \(k\)
  • \(f_{1, v, v} = 1, f_{i, j, k} \to f_{i + 1, v, k}, f_{i + 1, v, k + v}\)

  • 另一种是 \(f_{i, j, k}\) 表示前 \(i\) 个,选了 \(j\) 个,和为 \(k\)
  • 考虑如何保证不增:视为两种操作,全体加一和末尾添加一个 \(1\)
  • \(f_{1, 1, 1} = 1, f_{i, j, k} \to f_{i + 1, j, k}, f_{i + 1, j + 1, k + 1}, f_{i, j, k + j}\)

  • 考虑粘合这两个 DP。由于和为 \(m\),那么选中的大于 \(\sqrt{m}\) 的数一定不超过 \(\sqrt{m}\) 个。
  • 先用第二种 DP 转移前半部分,每次往后面的数加入 \(\sqrt{m}\)
  • 衔接到第一种 DP 时可以直接 \(f_{i, j, k} \to g_{i, \sqrt{m} - 1, k}\)
  • 然后就可以了。
  • 空间会炸。那似乎只能两个 DP 一起进行了。
  • 我去我怎么调了一百年。

AT_arc148_e

  • \(A_i \geq \dfrac{K}{2}\) 是大数,\(A_i < \dfrac{K}{2}\) 是小数。
  • 按照 \(|2A_i - K|\) 排序,小数放后面。
  • 直接插是没啥问题的。设大数 \(p\) 个,小数 \(q\) 个,那么:
    • 插大数时:要避开小数插,\(p + 1 - q\) 种。
    • 插小数时:不能和小数插一起,只能在两个大数之间,\(p + 1 - q\) 种。

  • 我忘记要去重了。/fn

QOJ9489

  • \(0 \to +1, 1 \to -3\),折线图。
  • 和为 \(0\) 且不存在相邻的两个 \(1\)
  • 删除深度最大的 \(-3\) 是很有道理的贪心。
  • 因此充要条件还有 \(x - 3\) 后面折线最高点 \(\geq x - 1\)

  • \(f_{i, j, k}\) 表示从后往前 \(i\) 个数,\(j\) 为当前高度,\(k\) 为最高高度。
  • \(f_{n + 1, 0, 0} = 1, f_{i, j, k} \to f_{i - 1, j - 1, k}, f_{i - 2, j + 2, \max(j + 3, k)} [k \geq j + 2]\)
  • 答案为 \(f_{n, 0, p}\)。实际实现要给 \(j\) 加上 \(n\)。加个滚动数组。

  • 怎么一个个都写得这么快。

P11346

  • 贪心:对于每个连通块,从区间数最少的开始依次删除。
  • 正难则反。

  • \(f_{l, r}\) 表示已经加到了 \([l, r]\) 这个并集时的方案数。
  • 忽略完全包含区间的不合法转移,DP 内只考虑会带来改变的转移。
  • DP 的状态和那些扩展后可以随时加入的点形成树结构。
  • \(v_{l, r}\) 表示区间 \([l, r]\) 完全包含几个区间,答案就是 \((n - 1)! \times \prod (n - v_{l_i, r_i})^{-1}\)
  • \(f_{l, r} = (cnt(l, r) \times f_{x, y} + cnt(l) \times f_{x, r} + cnt(r) \times f_{l, x}) \times (n - v_{l, r})^{-1}\)

  • 原来复杂度分析这么神奇。

AT_agc020_f

  • 离散化,枚举小数之间的相对关系,设为 \(\alpha_i\)
  • 然后把最长的拉出来。
  • \(f_{s, sx, sy, tx, ty}\) 表示当前状态为 \(s\),最后一个左端点线段为 \(sx + sy \times \alpha\),覆盖到了 \(tx + ty \times \alpha\)\(s\)\(2^{n - 1}\) 量级。
  • \(f_{0, 0, 0, L', 0} = 1\),转移是枚举在 \((sx, sy)\)\((tx, ty)\) 中的起点,然后抽一个长度 \(L_i\) 转移,更新。答案是 \(f_{2^{n - 1} - 1, ?, ?, C + ?, ?}\)

  • 估计要写个 cmp 啥的。拉了。
  • 概率改成除一个 \(C^{n - 1}\) 啥的应该就行。我的妈呀好难写。
  • 正在验证。卡住?故障排除。

CF1844H

  • 显然问题可以被表示为 \(f(a, b, c)\),分别为 \(len \bmod 3\) 的链有多少个。若有环可以直接删除。
  • \(f(a, b, c) = (a + b + c)f(a - 1, b, c)\),直接减到 \(f(0, b, c) = g(b, c)\)

  • 显然可以来电恒等式:(这里注意钦定相对顺序)

\[\begin{aligned} g(b, c) & = (b - 1) g(b - 2, c + 1) + c(b+c-1)g(b - 1, c - 1)\\ g(b, c) & = (c - 1) g(b + 1, c - 2) + b(b + c - 1)g(b - 1, c - 1) \end{aligned} \]

  • \((b, c), (b - 1, c - 1), (b - 2, c + 1), (b + 1, c - 2)\) 可以互相推导。具体就是等腰三角形知道两个点可以得出第三个点。
  • 一开始是 \((n, 0)\),后面每次操作可能会绕一个环或链接两条链。
  • \((x, y) \to (x, y), (x - 1, y - 1), (x - 2, y + 1), (x + 1, y - 2)\)

  • 一开始 \((n, 0)\) 初值不好算,于是倒着计算,从 \((0, 0)\) 开始。倒着就变成了 \((x, y), (x + 1, y + 1), (x + 2, y - 1), (x - 1, y + 2)\)
  • 那么 \((x + 2, y - 1)\)\((x - 1, y + 2)\) 可以通过过程中维护的 \((x, y)\)\((x + 1, y + 1)\) 直接算,\((x + 1, y + 1)\) 恰好是 \((x + 2, y - 1)\)\((x - 1, y + 2)\) 的叠加,也可以直接算。
  • 不要忘了 \(f(a, b, c) = (a + b + c)^{\underline{a}}g(b, c)\)

\[g(x - 1, y + 2) = \dfrac{g(x + 1, y + 1) - (y + 1)(x + y + 1)g(x, y)}{x}\\ g(x + 2, y - 1) = \dfrac{g(x + 1, y + 1) - (x + 1)(x + y + 1)g(x, y)}{y} \]


  • 但是会遇到 \(x\) 或者 \(y\) 等于 \(0\) 的时候,不能逆元。发现不能算的值应该有 \(g(0, ?), g(1, ?), g(2, ?)\)
  • 那就直接预处理这些!
  • \(g(0, x) = (x - 1)g(1, x - 2) = (x - 1)(x - 2)^2g(0, x - 3)\)
  • \(g(1, x) = x ^ 2g(0, x - 1)\)
  • \(g(2, x) = g(0, x + 1) + x(x + 1)g(1, x - 1)\)
  • \((x + 1, y + 1)\) 不能算的应该只有 \((0, ?) \to (1, ?)\),其他就是 \((0, ?) \to (2, ?)\)

  • 先正着使用并查集维护 \(a, b, c\) 的值,如果出现非三的倍数的环就倒闭。
  • 草我式子写错了没问题了/lh

  • 验证失败?排除故障。

CF2135E2

  • 由于 \(0\)\(1\) 的个数差不变,因此 \(f(s)\)\(f(rev(s))\) 只要删除 \(\texttt{10}\) 的次数相同就一样。
  • 跳跃一点,这等价于 \(\min \{s_i\}\) 相同,其中 \(s_i\) 是前缀和。
  • 这里两个 \(s\) 数组可以互相转换,条件为 \(\min\{s_i\} + \max\{s_i\} = s_n\)

  • 暴力是枚举 \(l = \min, r = \max, x = s_n\),然后算答案。这是 \(\mathcal{O}(n^2)\) 的。
  • 如何算答案?\(\max\)\(\min\) 的限制不好直接做,容斥一下,\(g(l, r, x) = f(l, r, x) - f(l + 1, r, x) - f(l, r - 1, x) + f(l + 1, r - 1, x)\)
  • \(f(l, r, x)\) 是一个经典的反射容斥。

  • 尝试把 \(f\)\(r - l\) 相等的绑到一起算,那就是计算 \(f(l, l + k, 2l + k)\)

不会了。

AGC053E

  • \(n - 1\) 个峰值很极限,是满峰值。大概有 \(n\) 种放置情况。

  • 感觉接下来这一步很牛啊。
  • 按照大值从大到小将二元组插入。那么这个二元组能插入的位置就是末尾和那些 \(p_j < q_i\) 的二元对。
  • 树状数组轻松维护。

  • 由于题目只是对每个对进行排列,所以对于相同顺序的对,即便是不同的序列也是一样的。
  • 考虑我们要让 \(p = n\) 不合法,那么需要存在 \(b_i < a_{i + 1}\)。这个最小的 \(i\) 应当就是 \(p\) 的取值点。
  • (原因:\(p\) 一但往右移动就不合法,\(p\) 往左移一定劣于 \(p\)

  • 为啥最后一步不会啊???

  • 最后一步其实也很朴素,就是枚举中间两个值 \((p_x, q_x)\)\((p_y, q_y)\),然后还是按照值域从大到小插入。
  • 只是由于形式和 \((x, y)\) 有关,需要扩展到和 \((x, y)\) 无关的样子。写出来会比较抽象。

Day 1

D1T1

  • 最大的 \(k\) 使选出 \(k\) 条路经两两不交。

  • 树直接从下往上随便连。

  • 把没有的点删掉

  • 狂暴猜结论:

    • 缩点,一个双连通分量内的答案只和每个信号基站度数相关。
    • 连通分量之间的传输是树的情况。
  • 如何构造答案

  • 一种构造是微调。\(\mathcal{O}(n^2)\),无法通过。GGG。


  • 注意到一条路径上经过了标记点肯定停止。可以把标记点删除,将原图断成多个连通块。
  • 在每个连通块内按照 DFS 树从下往上合并即可。

D1T2

  • 分析数的情况:肯定不是,全说真话有可能是,有说谎有可能是。
  • 第一种数不重要。
  • 设后两种的数量为 \((u, v)\),容易发现题目问的就是 \((u, v)\) 情况下最少问多少次。

  • 分析 \(f(u,v) = i\) 的条件,打表发现 \(0 \leq v \leq 2^i - (i + 1)u\)
  • 那算 \(u\) 的范围就随便算一下就行了。然后算前缀和即可。

Day 2

D2T1

  • 判断一种染色方法是否可行。

  • 考虑链。

  • 一个区间想要继续合并只能是最大值 / 最小值,但这似乎不太可能。

  • 最后一次操作是 \([1, y]\)\([y + 1, x]\) 颜色区间的合并,如果 \(y \neq 1\) 不可能得到最小值。

  • 需要 \(1\) 在最前 / 最后。最大值同理,需要 \(x\) 在最前 / 最后。

  • 正式合并最后一次不需要保证最大最小。

  • 答案为 \(\sum_{x = 1}^{n - 1} 2^{x - 1}2^{n - x - 1} \times 2 = 2^{n - 1}(n - 1)\)

  • 错了???


  • 有可能会有重复(如 1 2 3 4 占了 \(3\) 次贡献,多算了 \(2\) 次)

  • 其实如果前缀 \(x, x + 1\) 都合法,说明 \(x + 1\) 前缀一定是 \(1, 2, \cdots, x + 1\)

  • 重复的情况只有 \(1, 2, \cdots, n\)\(n, n - 1, \cdots, 1\)

  • 为啥还是错了,打个表。

  • 好像只要 \(p_i = i\)\([1, i - 1]\) 合法,\([1, i]\) 就合法。

  • 因此答案应该是 \(2^{n - 1} + \sum_{x = 2}^{n - 1} 2^{x - 2}2^{n - x - 1}\times 2 = 2^{n - 1} + 2^{n - 2}(n - 2)\)

  • 链通过了。

  • 考虑菊花。是不是任意情况都行,试试?其实是中间的可以是 \(1, 2, n - 1, n\),答案为 \(4(n - 1)!\)


  • 说是删除一条边分成的两个连通块,topo 序计数后乘起来。

  • 去重怎么办?两个条件:

    • \([siz_{v'} + 1, siz_v]\) 都在 \(v\) 子树内,\(v'\) 子树外。
    • 这些数存在 topo 顺序。
  • 因此对于 \(fa_v, v, v'\),答案是:

  • \[\text{topo}(A / sub(v)) \times (\text{topo}(sub(v)) - \sum_{v_1}\text{topo}(sub(v')) \times \text{topo}(sub(v)/sub(v'))) \]

  • 根据 \(n!\prod siz_i^{-1}\),我们可以在从上往下的时候计算出 \(\text{topo}(A/sub(v))\),预处理出 \(\text{topo}(sub(u))\),并且 \(\text{topo}(sub(v)/sub(v'))\) 可以通过简单的逆元算出。

  • 写一下?


  • 我竟然不会无根树拓扑计数!!!话说这个其实是不是不叫拓扑。
  • 我发现了,如果我钦定一个点 \(x\) 最晚被删除,那么这时就能转化成有根树拓扑序。
  • 那是不是再加个换根就差不多了。写一下?

  • WA 了,感觉不太好。
  • 去重出了点问题,大概在反着填的时候。
  • 那能不能再加限制?我要一直都让 \([1,x]\) 部分的 \(x\) 最小?也就是我要让 \([x + 1, n]\) 的部分最大(但是是比较小的部分)
  • 我觉得整个算法都崩溃掉了。换一下吧。

  • 是不是重复唯一一种可能就是 \(u\) 只有一个儿子。
  • 差不多,然后就拆一下就行。
  • 根处十分恶心,有可能重复,需要好好分析一下。

D2T2

  • 考虑单次询问。每个点在 \(a_i\) 时刻之后要不包含在 \((L, R)\)
  • 必要条件:\(a_i \geq \min(x\to i, y \to i)\)。又 \(i\) 下面至少挂长为 \(a_i\) 的链,那么最多 \(\sqrt{n}\) 个点。
  • 按时间建出笛卡尔树。\(dp_i\) 表示走进 \(i\) 结点的最少时间。\(\mathcal{O}(nq + q\sqrt{n})\)。瓶颈在找到这些点。

  • 重链剖分。不会咋办。
  • 发现一条重链两边进是没用的。因此一个 \(x\) 的改变只会影响 \(x\) 往上的每一条重链。
  • 重链维护一个 set 就行。将点拉出来之后就可以在笛卡尔树上 DP 了。

Lesson 2

P9961

  • 纯难题。
  • 考虑构造一个图使得最终情况较好判断且变化小。
  • \(a_i \to a_{i + 1}\) 差点。
  • \(a_i + 1 \to a_{i + 1}\) 很可以。

  • 每次可以交换两对点的终点值,因此最少 \(\dfrac{n + 1 - \text{cyc}}{2}\) 向下取整。

  • 构造很神秘。
  • 每次找到最大的 \(i\) 使得前面有 \(a_j > a_i\)
  • 不行有点太变态了。

  • 考虑如何让一个 \(a_x\) 从环中分出来。
  • 需要让 \(a_x + 1\)\(a_x\) 前面。
  • 那两个我就要让 \(a_x + 1\)\(a_y\) 前面,\(a_y\)\(a_x\) 前面,\(a_x\)\(a_{y} + 1\) 前面。
  • 限制很松,那就随便构造。先满足 \(a_y + 1\) 在外面,那就 \(a_y\)\([1, x]\) 的最大值。
  • 那如何让 \(a_x + 1\)\(a_y\) 前面?如果有 \(a_x + 1\) 也在 \(a_y\) 后面,那我就让 \(a_x + 1\) 是新的 \(a_x\) 就行了。

QOJ14506

  • 从简单的点入手。
  • 删叶子。每次叶子 \(x\) 出现一定会伴随一个 \(y\) 一起出现。
  • 每个点维护一个 \(\text{set}\),表示第 \(x\) 个数出现了几次。
  • 每个点记得维护有效连通块个数,和这个个数与最大出现次数的差值。每次选择最小的作为叶子删除。
  • 好难写。

  • 我竟然一遍过了。

QOJ12150

  • 我们需要动态地找出相离的区间 / 重合的区间。
  • 并非动态,直接排序后扫一遍就行了。

P14847

  • 考虑将线段按照左上,左下,右上,右下分成四组。设为 \(A, B, C, D\)
  • 答案存在当且仅当 \(A + B = C + D\)\(A + C = B + D\),也就是 \(A = D, B = C\)
  • 那注意到 \(A + B = A + C = \dfrac{\sum}{2}\),因此找到两组和为 \(\dfrac{\sum}{2}\) 的子集就可以构造了。
  • 这个可以使用 DP 计数。
  • 但好像实际上,由于存在一个,补集就必然是另一个,因此需要有 \(4\) 组以上。

QOJ4912

  • 考虑一个算法:
    • \(a_x = 0\) 时,\(x = 0\)\(a_x = 1\)
    • \(a_x = 1\) 时,\(x = x + 1, a_x = 0\)
  • 使用前五个位置记录下标,并判断什么时候刚开始就在 \(u - 1\),这就说明调用了 \(2^u\) 次。

QOJ4832

  • 变态来的。
  • 考虑 \(n = 3, k = 1\) 我们搜索每种盘面对应的策略。发现存在策略正确率超过 \(0.66\)
  • 将字符串分成长度为 \(3\) 的很多段。然后按搜索出来的策略做就行了。

P9070

  • 考虑先不通过交换,重排每一行让列互不相等。
  • 可以直接二分图匹配。
  • 然后就可以 \((i, j)\)\((j, i)\) 交换了。
  • 这题咋这么诡异。

Day 3

D3T1

  • 考虑 \(A\) 每次向前移动一格,\(B\) 每次向前移动两格。
  • 一种可能的策略是先将 \(A, B\) 全部移动到环内,然后 \(A, B\) 同时走 \(1\)\(2\) 格。
  • 然后差不多就行了。
  • 好像拉了,是 \(5n\) 的。

  • \(n\) 怎么也是未知的。
  • 失误了。

  • 考虑如何让 \(A, B\) 全部都进入环内。
  • 如果都进入环内了,\(q\) 次确定 \(q\) 是很轻松的。
  • 目前只会 \(3(p + q)\)\(A, B\) 都进入环内。
  • 如果一个点在环内,一个点在环外,且环内的点和环外的点模 \(q\) 同余,就可以找到 \(p\) 了。
  • 需要 \(5p + 4q + 1\),差一点。

  • 能不能再压一下???
  • \(p\) 的范围压到了 \(q\)。过题了。哦耶。

D3T2

  • 先暴力枚举 \(i\) 再说。看看如何判断。假设 \(x\)\(i\) 所在区间个数。
  • 从简单的入手。对于所在区间个数不及 \(x\) 的点,无脑填满。
  • 现在,所有点的区间个数都大于等于 \(x\)。那么这里这个点的个数应该是 \(\dfrac{S}{x}\) 的。
  • 我咋才发现可以网络流。拉了。

  • 感觉模拟不了网络流啊。只能先放着了。
  • 让我追忆一下 Dinic 怎么写。

  • 我真的只会写 EK 了。能不能直接碾过去。
  • 碾不过去。/ll

  • 主要烦人点是每次要去掉 \(i\) 再网络流。
  • 眼光放开,考虑对于全部数,最大值最小是多少。假设是 \(v\)
  • 那么 \(d_i < v\)\(d_i > v\) 就都是显然的了。
    • \(d_i < v\):所有数都要小于 \(v\)。不可能。
    • \(d_i > v\):你稍微把最大值最小的情况调整一下就行了。
  • 因此只需要判断 \(d_i = v\) 的情况。

  • 继续考虑调整,首先所有数限制都是 \(v - 1\) 是可以求出来的。
  • 显然不能匹配完,而且在残量网络上一定存在一条从 \(i \to T\) 的路径。只要如此,加入 \((S, i)\) 时就可以增广。
  • 并且最大流应该等于 \(m - 1\),不然就算 \(S \to i\) 流满了也不够。
  • 以上就是充要条件。

  • 找阙值可以:
    • 直接二分。
    • \(d_i\) 离散化后按顺序增流。\(\sum d_i = S\),根号种,所以可以。
    • \(d_i\) 离散化后二分,并且如果二分往大的走就增流。

D3T3

  • 怎么感觉这个 \(f(s)\) 很典呢。
  • 是不是要正着扫一遍,看最小值要 \(\geq 0\),反着来一遍,最小值也要 \(\geq 0\)
  • \(n^2\) 是能做的。

  • 为啥 G 了。
  • 哦因为正反的删除策略需要一致。
  • 可以,\(20\) 了。

  • 可以发现 \(A\) 性质的 \(q = 100\)\(20\) 本质相同。
  • 好像可以了。

  • \(\text{Sub 4}\) 可以直接上单侧递归线段树做。但是我打算先放一下去看 T2。
  • 我回来写 \(60\) 了。
  • \(s_i\) 表示前 \(i\) 位的正常的和,\(t_i\) 表示前 \(i\) 位倒过来的和。
  • \(s_{L - 1} \times (R - L + 1) - \sum_{i = L}^R t_i - \min\{s_r\} + \max\{t_r\}\)
  • 两颗单侧递归线段树,然后稍微预处理一下是不是就可以了。

  • 我又不会了,偶数咋处理啊。
  • 能不能把正反并到一起来。
  • 咋办,倒闭了。

Day 4

D4T1

  • 啥博弈啊??
  • 先写个暴力中的暴力。
  • \(x = y\) 很有规律啊。
  • 对于固定终点,每行有且仅有一个 \(0\)
  • 谁爱做谁做。

D4T2

  • 啥构造啊???
  • 一个集合有 \(2^{2000}\) 种状态。这咋办。
  • 间隔可能只有 \(63\) 种左右。
  • \(1\) 的个数很少的时候可以直接 \(m - 1\) 构造。

D4T3

  • 还有 \(n \leq 13\) 的说。

后记

不太像是题解,更像是一个简单的记录。实际上很多文件都因为体育中考丢失了。

posted @ 2026-04-25 07:49  DE_aemmprty  阅读(7)  评论(0)    收藏  举报