#10 2023.12.25
483. loj3532 「NOI2021」轻重边
在车上花了 10min 造了一个毛毛虫树剖 /hanx。
不会 LCT。
484. loj3533 「NOI2021」路径交点
LGV 引理板子题。
还是不懂为什么 NOI 要放这种 0/100 的题。
485. loj3534 「NOI2021」庆典
题目条件的意思是缩完点是个外向数。
对于每次询问,把所有有关的点拉出来建虚树,显然不能走出虚树,那虚树上的一条边的状态是一样的。把虚树的每个点和每条边拉出来 bfs 即可。
486. loj3535 「NOI2021」量子通信
随便乱搞题。分 16 段,一定有一段相等,判 diff 可以每段 popcount。
487. loj3536 「NOI2021」密码箱
显然只有平衡树能完成这个操作。考虑矩阵。
答案大概能写成 {{0,1},{x,1}}{{0,1},{y,1}}...{{0,1},{z,1}}{a,b} 之类的东西。
然后对于 WE 分类讨论,发现它们可以对应成矩阵,那就无脑平衡树了。
488. xsy5309 路径(path)
?
489. xsy5310 迷失(lost)
如果只考虑一个强连通分量,周期是所有环长的 gcd。不同强连通分量之间完全不会影响,所以答案是所有强连通分量的答案的 lcm。
另外一个答案直接倍增即可。尝试构造了答案爆 int 的情况,似乎很难构造的出来。不管了。
490. xsy5311 树(tree)
考虑不合法的,那就是对于每个子树,在子树内的是 1,不在子树内的是 0,那就是一个极长同色连续段都是不合法的。那就 dsu on tree 维护区间,在外面套一个扫描线就过了。
好像 std 做法不太一样?研究研究。
491. loj3537 「NOI2021」机器人游戏
大概是,钦定最后一个合法位置 \(r\)。发现有关信息只需要前 \(min(r,n-r)\) 位是否合法。
一个机器人只能把一个位置变成 0/1/x/1-x,发现对于一个机器人 \(x\) 的一个位置 \(i\),可以根据前 \(len_x\) 个位是否合法,获得 0/1/x/1-x 的状态,对应到这一位上有 1/2/3 种填法。所以只需要记录 \(dp_{i,S,0/1}\) 表示前 \(i\) 位,最后 \(min(r,n-r+1)\) 位的状态是 \(S\),在 \(S\) 的前面是否有合法位置。转移暴力,可以做到 \(O(n^2 m 2^{n/2})\)。
发现我们不关心每一位 0/1/x/1-x 的具体状态,我们只关心 \(cnt_2\) 和 \(cnt_3\)。这可以通过 \(b_0,b_1,b_x,b_{1-x}\) 求出,其中 \(b\) 是个 bitset 集合。进行一个 bitset 的转移,大概能做到 \(O({n^2 m 2^{n/2} \over w})\)。
有点累了没写代码,贺了 zky 的。orz zky!
492. loj3931 「WC2023 / CTS2023」楼梯
考虑描述轮廓线。向下是 1,向左是 0。发现操作序列上如果有 \(y - x + 1= q,a_x = 1,a_y = 0\) 就合法。发现 \(a_1\) 一定是 1,\(a_{p + 1}\) 一定是 0,并且是倍数,所以可以直接拉出 \(a_{kq + 1}\) 的序列,求出中间的那个权值之后递归到某一半。
493. The 2nd Universal Cup. Stage 2: SPb
心态崩了来场 ucup 娱乐一下。
好像四舍五入等于摆了一天。
B
大力模拟 ymd。
A
使用经典套路,大概是 \(ndp _i \leftarrow dp_i + \min (i,5-i)\)。
I
?
J
最优解至多 tp 两次。
G
根据度数大小分别维护。
D
神秘构造。正方形特判。
把短边填满,然后中间可以填一条线,或者
L
通信板子题。
E
神秘搜索题。使用神秘估价函数,搜最小的二十个就过了。
M
厉害题!
设 \(f_n\) 为答案,\(g_n\) 为长度为 \(n\) 的没有 \(S\) 的方案数。
\(f_i = g_{i - m} - \sum_{b \in border} f_{i-m+b},g_i = |\sum|g_{i-1} - f_{i}\)。
把所有的 \(f\) 用 \(g\) 替换,变成了线性递推。
K
模拟费用流板子题。
C
厉害题!等会写。
这个题的有向图版本是简单的,只需要考虑 \(dep_u + w - dep_v\) 即可。
无向图版本比较牛,首先需要考虑每个简单环,然后把每个简单环染色,这里染色使用 xor hash。发现被染成同色的路径比较牛,总能找出多走 2*同色路径长度 的路线。再把这些东西取 gcd 即可。
H
sqrt tree,不知道为什么能过。
F
?
494. xsy5312 景点游览(vis)
考虑画出数轴。如果 \(i\) 能到达 \(j\),就连边 \(i \rightarrow j\)。发现答案区间没有往左的边和往右的边。
枚举 \(r\) 作为区间的右端点。没有往右的边是容易的,扫描线的时候维护一个集合即可。令 \(l = \max \{x \in S\} + 1\)。对于 \(i> j\) 的边 \(i \rightarrow j\),相当于把 \((j,i]\) 全都 $ban $ 了。查询相当于查 \([l,r]\) 内没被 ban 的点数量。
但是现在有 \(O(n^2)\) 条边,我们发现只需要保留原图的边就够了。原因是如果一条边不合法,在原图上对应一条路径,路径的起点和终点分别在区间内外,一定有条边跨过区间端点。
495. xsy5313 人生画卷(life)
OEIS 哥赢麻(?。
显然每个颜色要么包含,要么不交。对于一个用了 \(k\) 个颜色的方案,有 \(A_m^k\) 的系数。
大概设二元 GF \(F\) 表示长度为 \(n\),用了至少 \(m\) 个颜色,允许有空格的方案数。\(G\) 表示不允许有空格的方案数。
发现 \([x^i] G = y[x^{i-1}] F\),然后就不会解了(??。
打了个表,往 OEIS 里扔了一下就过了(?。素质很差。
496. xsy5314 博弈游戏(game)
最简化版的单向链老鼠进洞板子题。傻逼。
497. 正睿神秘题
题意:给一棵树。每次询问给出 \(k\) 个 dfn 区间,询问由这些区间的点构成了多少连通块。
题解:
考虑 \(k = 1\)。令 \(nxt_u = u + size_u\),即走完 \(u\) 子树之后走到的第一个点。对每个连通块以深度最小的点为根。如果 \(u\) 是某个连通块的根且 \(nxt_u \leq r\),则 \(nxt_u\) 一定是另一个连通块的根。注意到 \(l\) 一定是某个连通块的根,则从 \(l\) 开始倍增即可。
考虑 \(k \neq 1\)。先对每个区间求答案,再减去不同区间之间的边。对于区间 \(j\),考虑它和区间 \(i(i<j)\) 之间连的边 \((u,v)\)。发现 \(u\) 一定在 \([l_j - 1,lca(l_j-1,r_j)]\) 这条链上。从左往右扫描区间,维护一个栈。扫到 \(j\) 的时候,\(i\) 区间在这条链上一定是一个连续段,可以用倍增求出交的大小,并且判断是否可以 \(pop\) 掉 \(i\) 区间。
498. loj3932 「WC2023 / CTS2023」比赛
发现限制很强!咋办呢。考虑取出出现次数最大的数,然后按照 110110110... 的顺序优先把这种数放完。其他的 shuffle 一下扔进去。
然后就随机调整!啪的一下就过了!很快啊!感受这股劲!
499. loj3933 「WC2023 / CTS2023」树据结构
学个马老师的 \(O(n\log n )\) 跑路得了。
首先随机打乱边权。尝试求出每个点的 \(faw\),且使得父亲的 \(faw\) 小于儿子的 \(faw\)。把每个点都 query 一遍,答案为 \(x\) 的扔进 \(S_x\) 里。取出 \(x\) 最小的 \(S_x\),和当前不是任何点的 \(faw\) 的最小的边权 \(y\)。进行一次 \(exchange(x,y)\),然后 \(S_x\) 中有且仅有一个点的 \(query = y\),那么这个点的 \(faw = y\)。剩下的点扔进再次 query 获得的答案的集合。
现在我们有了每个点的 \(faw\),尝试还原这棵树!记 \(faw_u = i\),按照 \(i\) 从小到大的顺序加点!二分 \(faw_{fa} = j\)。首先 \(exchange(i,mid)\)。若 \(mid < query(u) < i\),则 \(query(u) = j\)。若 \(query(u) = mid\),说明 \(j \leq mid\)。若 \(query(u) = i\),说明 \(j > mid\)。
500. loj3988 「IOI2023」封锁时刻
庆祝 500 题!
考虑没交的情况,是个简单贪心。
考虑有交的情况!把 \(x\) 到 \(y\) 的路径上的点都选上小的一边。然后对于不在路径上的每个点,可以看作 付 \(a_i\) 获得 1 贡献,\(b_i\) 获得 2 贡献。路径上的每个点,可以随时花 \(c_i\) 获得 1 的贡献。按照 \(b_i\) 排序,枚举最大的选 \(b_i\) 的点,那么前面一定都选了 \(a_i\),那就变成了一堆 \(b_i -a _i\)。后面全是 \(a_i\)。线段树二分即可。
501. loj3989 「IOI2023」最长路程
注意到图连通块 \(\leq 2\),且如果有两个连通块,这两个连通块分别是环。
考虑把图剖分成不交的两条链,使得每个点都在某条链中。考虑一次性加入两个点,可以和两条链的链尾简单分类讨论得到新链。
如果两条链之间没边,就返回长的链。否则取出链的两个端点,看它们和另一条链的端点有没有边。如果有可以把两条链拼起来。否则两条链分别是个环,二分出连接两条链的任意一条边即可。
502. xsy5327 早八(class)
数全 0 的区间。维护极长全 0 区间,加入或删除是简单分类讨论。
503. xsy5329 间谍(spy)
注意到一个点的覆盖范围是一个大凸包。那就变成了多边形数点。因为斜率和边数很少,可以每个斜率按照截距扫描线。

浙公网安备 33010602011771号