NOIP2025专题-图论1

比 DP 的专题像人了一点儿,但又不完全像。
代码不贴了,太长太抽象了。

[arc084_b]Small Multiple

同余最短路板子。
考虑两种操作,乘 10 和加 1 。显然只有加 1 会产生贡献,然后建个边就完了。

[abc216_g]01Sequence

这不是我们 CSP-S2024 T2 第二问的十倍经验之一么?

  • 解法一:直接贪心,树状数组优化,公公又式式啊。
  • 解法二:差分约束直接做。\(dis_{i}-dis_{i-1} \ge 0\)\(dis_{i-1}-dis_{i} \ge -1\)\(dis_{r}-dis_{l-1} \ge c_{i}\) ,但是出题人把 SPFA 杀了,反向直接设 0 的个数就可以转换成正权图, dij 做完了。

P2662 [WC2002] 牛场围栏

同余最短路特有的巧思。

  • 解法一:背包。可以证明答案上界很小,复杂度是对的。
  • 解法二:同余最短路妙妙题。设 \(x\) 为剩余系的模数, \(dis_{i}\) 表示可以凑出的余数为 \(i\) 的最小数字, 那么其余的 \(dis_{i} + kx\),k为非负整数则全部可以凑出,但 \(dis_{i} - x\) 显然不能。那么答案就是 \(\max_{i=1}^{x-1}{dis_{i} - x }\)

P2680 [NOIP 2015 提高组] 运输计划

数据结构魔怔人出场了。
显然答案一定在最长的那条路径上。我们发现答案是:所有经过这条边的给定路径减去边权 和 不经过这条边的最长边 取 \(\max\)
祭出树剖,然后上一个线段树一个树状数组,直接大力做完了,跑得还不慢。

P4211 [LNOI2014] LCA

差分比较好想可能是。

  • 解法一:树剖 + 差分。
  • 解法二:我才不会说我拿 LCT 写的。

P1852 跳跳棋

哦那我感觉出题人出这种人均零分的题很纸张啊😅
首先考虑四种操作:中间分别向两边,两边分别向中间。设当前位置 \(a,b,c\)\(d1=b-a\)\(d2=c-b\) 。在 \(d1=d2\) 时只有中间向外跳的情况,不相等时由于只能跨越一个棋子所以只有一种向中间跳的情况。 很不显然的是这是树。鬼知道它为什么是树反正它确实是。然后你发现你建不出来。
那发动想象学竞赛的能力你想象一下,发现可以压缩一下,直接压缩,设 \(d1<d2\) 那跳的次数就是 \((d2-1)/d1\) 。然后瞎跳就跳出来了,终态就卡在 \(d1=d2\) 。反正我觉得跳这个东西还不如我直接跳了得了。

CF1005F Berland and the Shortest Paths

终于可做了😥
题面一眼最短路树,然后考虑加非树边,那么要断掉树上一条边,保证前后 \(dis\) 一致即可,统计方案数直接把每个点方案乘算即可。注意 \(size()\) 返回的是 unsigned 类型,直接乘起来会出锅,随便处理一下就行了。

CF507E Breaking Good

这不是纯水?
这题我讲的,太简单不写了😋

CF1981E Turtle and Intersected Segments

巧巧又思思啊🤓
\(a_{i} \le a_{j} \le a_{k}\) ,那么实际上我们只用连接相邻两个就够了,连接 \(a_{i} , a_{k}\) 绝对是不优的。
端点排序后 \(set\) 维护前驱后继即可,细节有一点。

[AGC004D] Teleporter

智慧贪心。
在 1 节点连一个自环,那么“恰好”这个条件直接就被消除了。之后我们从树底部向上遍历,如果深度已经大于 \(k\) ,那么直接连到 1 节点,加个特判就行了。代码也是最短的,大概是比较好想。

[AGC016D] XOR Replace

神奇题。
这题又我讲的,太简单不写了😋
好吧其实找出异或的交换性质,只要能想到连通块就做完了。

CF125E MST Company

什么东西啊,不会😡
什么东西啊,好麻烦😡

CF1707C DFS Trees

抽象。
发现最小生成树的边是固定的,直接找出来标记。
懒得写了。

CF1051F The Shortest Statement

最简单的一集。
注意到这个图极其稀疏,直接检出最短路树,非树边最多只有 21 条。考虑两点间最短路只有树上的和经过非树边的。树上距离直接求,经过非树边的路径,我们可以对这 42 个点记录最短路,然后就能直接求了。
最后二者取 \(\min\) 即可。

posted @ 2025-08-24 19:09  S_Keep_Kiding  阅读(39)  评论(10)    收藏  举报