省选题选做
P9170 [省选联考 2023] 填数游戏
打 zr 遇到的某题加强版。
首先
考虑 check 合法。显然可以转化为
接下来考虑求解,分两种情况:
- 基环树
首先非环边是确定方向的,所以这部分能匹配就匹配。接下来考虑环边,有两种定向方法,设这两种的答案分别为
- 树
此题真正难点。
首先将
然后考虑剩下部分,可以看做给边“定向”。具体来说,若
Bob 显然是选一个根,形成一棵外向树。设
显然暴力考虑每种方案是指数级的,这启发我们减少状态数。具体而言,如果我们发现,如果两条边
因此考虑换根,对于每个 Alice 根,用一个 DS 维护所有 Bob 根的答案。那么可以发现
于是我们以
P10217 [省选联考 2024] 季风
约定:令
显然地,考虑按
假设加上的是
注:
于是做一点转化,令
注意到答案实际上相当于维护 pair<int,int>
和 array<int,3>
存储最终的解集(可以直接维护左右端点,比较好写),同时细节也很多,比如我就挂了 。
复杂度
P10218 [省选联考 2024] 魔法手杖
看到异或这种东西,考虑按位确定答案。
先特判掉
直接做貌似并不好处理,考虑放在 01-trie 上做。
具体来说,设计一个函数 solve(p,bit,cost,mn,x,ans)
表示当前走到节点
如果递归到叶子,就直接用
否则,不妨假设当前点有两个儿子。显然,如果两个儿子都选异或,那么答案的这一位一定会
以删除左儿子为例。首先肯定要满足加上左子树之后的
对于删除右儿子以及只有一个儿子的情况也是类似的,具体可以看代码。
时间复杂度
P10219 [省选联考 2024] 虫洞
P10220 [省选联考 2024] 迷宫守卫
题目要求最大化字典序,不妨先考虑考虑如何最大化第一个数。
考虑二分,每次二分一个数
根据是否封锁当前节点讨论,有
然后这个东西也是可以直接 dp 的,具体就是把
然后假设第一个走到的是叶子
但是还有一个问题没有解决:就是删掉这条路径之后,
-
是右儿子。此时其父亲显然是没有封锁过的(否则会从左兄弟下去, 就不是第一个点了),也就是 。此时我们直接把左兄弟的 值加回到 里即可。 -
是左儿子:此时父亲可能被封锁过。首先如果没被封锁和上面是一样的,此时有 。否则,我们考虑把 加回去,也就是撤销掉这次封锁,这样可以使右兄弟的答案变大。但是加回去需要满足从右兄弟下去只能走到 的点,否则从右兄弟下去最优解就不是 了。判断很简单,只需要检验是否 即可。
复杂度:设
然后随便分析分析就知道
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!