【A】杂题宣讲

P12195 [NOISG 2025 Prelim] Itinerary

对于 \(u\),可以成功的充要条件是:将 \(u\rightarrow s_1\rightarrow s_2\rightarrow \cdots\rightarrow s_m\rightarrow u\) 经过的边都加上 1 后,所有的边都是只遍历了 0/2 次。
那么先对于 \(s_i\rightarrow s_{i+1}\) 的边 +1 后,检查 \(u\rightarrow s_1\)\(s_m\rightarrow u\) 之间的边是否存在经过两次的边即可。复杂度 \(O(n\log n)\)

P11454 [USACO24DEC] 2D Conveyer Belt S

时光倒流,先处理出最终状态下每个格子是否可用。然后当你撤销一个操作的时候,你可以从当前格子开始搜索。

  • 如果当前操作的格子是可用的,那么退出。
  • 如果当前格子是不可用,且周围存在一个可用格子,那么该格子变为可用。

\(O(q+n^2)\)

P12018 [NOISG 2025 Finals] 机器人

你考虑求出每个位置开始的机器人最后可能的终点里,最小和最大的分别是 \(L_i\)\(R_i\)
可以通过调整法,使得最后到达某个节点的都是一个区间内的起点。

那么,问题转化为给定 \(n\)\([L_i,R_i]\),左右端点均单调递增。
每次对于一个区间内的 \([L_i,R_i]\) 进行询问:

  • 将这些 \([L_i,R_i]\) 分成若干组,要求组内满足交非空。

那么你贪心地,对于 \(u\) 找到最后一个可以使得他们分到同一个组内的 \(v\),然后连边 \(u\rightarrow v+1\)。那么就是一个倍增的过程。\(O((n+q)\log n)\)

P11536 [NOISG 2023 Finals] Curtains

即询问,对于每个 \([L,R]\) 内部的点 \(x\),是否存在满足 \(L\le l_i\le x\le r_i\le R\) 的区间 \([l_i,r_i]\)
考虑扫描线,设当前加入的区间满足 \(r_i\le R\),那么只需要选出来的区间都满足 \(l_i\ge L\) 即可。
\(a_i\) 表示覆盖了 \(i\) 这个位置的区间里,\(\max l_i\) 是多少。那么询问答案即为 \(L\le \min_{i=L}^R a_i\)。复杂度 \(O((n+q)\log n)\)

CF2135D2 From the Unknown (Hard Version)

考虑弱化版,先问 \(n_1\)\(1\),那么可以确定 \(\left\lceil \frac{W}{n_2}\right\rceil\)。于是可以得到 \(W\in [l,r]\)
考虑到有 \(r<2l\),那么可以问 l 1 l 2 l 3 l 4 ... l r-l。对于 l i,若 \(W\in [l,l+i-1]\),那么有 2 的贡献,否则是 1 的贡献。那么就可以区分出来了。

考虑加强版。这里第一步就超出限制了,那么我们可以换种方式,问 \(k\)\(b\)
若返回 0,说明 \(W<b\),那么第二次直接问 \(b(b+1)\)\(1\),可以证明对于每个 \(W\) 这都是两两不同的。
否则,与上面处理类似。调整 \(k,b\) 即可通过。\(b=123,k=8257\) 是一组可行解。

P8293 [省选联考 2022] 序列变换

对于 \(x=y=0\) 不做考虑。

因为你有操作二,于是考虑根据括号的包含关系建出树,那么儿子之间是没有顺序的。
操作一即为,对于一对兄弟节点 \(P,Q\),将节点 \(Q\) 和他的儿子的父亲都设置为 \(P\)。因为不允许并列括号,故最后树变成一条链。

首先需要把 \(k=1\) 的前缀忽略掉,他们不会有任何贡献。
然后从上往下做是不劣的。那么对于当前这一层,不妨设点权从小到大分别为 \(a_1,a_2,\cdots,a_k\)\(a_p\) 为保留下来的节点。

  • \(x=0,y=1\):本层的贡献为 \(-a_p+\sum a_i\),做法是直接选择 \(p,i\) 进行操作。那么 \(a_p=a_k\) 即为最优操作,用堆进行操作即可。
  • \(x=1,y=1\):除了 \(a_p\) 都和 \(1\) 进行操作,然后将 \(1\) 连向 \(p\),贡献为 \((k-2)a_1+\sum a_i\),然后也是留下来 \(a_p=a_k\) 最优。
  • \(x=1,y=0\):这里比较难,下面即讨论这种情况。类似地,贡献可以做到 \((k-2)a_1+a_p\)
    • 对于第一个贡献,我们想要下放最小值。
    • 对于第二个贡献,只有链尾那个点不会产生贡献。所以我们想要下放最大值。

那么只有当 \(k=2\) 的时候我们不能同时满足这两个条件。考虑我们的 \(k\) 长成什么样子,应该是 2,2,2,3,...,3,2,1
对于最后面的这个地方,我们可以通过暴力枚举下放情况来取得最优解。
对于前面的这段 \(k=2\) 的前缀,只有其中的最小值和最大值有可能被下传。那么分别模拟即可。

P4099 [HEOI2013] SAO

经典问题。外向树拓扑序是好求的。

选出若干内向边,钦定他们一定不满足条件,然后剩余内向边不管是否满足条件。
即将 \(A\) 条内向边容斥为外向边,其余内向边视为不存在。容斥系数即为 \((-1)^A\)
考虑 dp 这个带符号的值,转移是容易的。

其实也可以直接暴力做,设 \(f_{u,i}\) 表示 \(u\) 在其子树拓扑序中排第 \(i\) 个,转移需要一点前后缀和优化。

QOJ4420 Range Reachability Query

直接每 64 个分成一块,然后压成一个 unsigned LL 跑可达性,边的限制用一个按位与描述。

[AGC012F] Prefix Median

从后往前确定 \(b\),相当于一开始这个中位数在中间,然后可以往左/右走一步,或者不动。
删除相当于在删除的那边增加一个道具,消耗道具可以使你跨过一格,然后这个格子就被删除了。
然后你观察每次可能的到达区间,这个东西每次一定是向两边拓展一格。

然后考虑到元素可能相等,在一个连续段内每个位置都是本质相同的,那么到达区间就不会拓展。
考虑按照当前时刻、左边和右边可到达位置作为状态 dp,转移 \(O(n)\),总复杂度 \(O(n^4)\)

\(\mathtt{\color{Red}\Gamma}\)

CF2135F To the Infinity

。。

posted @ 2025-09-05 18:59  TallBanana  阅读(25)  评论(0)    收藏  举报