专栏文章
2025NOI省选训练
生活·游记参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mip8zh0a
- 此快照首次捕获于
- 2025/12/03 08:07 3 个月前
- 此快照最后确认于
- 2025/12/03 08:07 3 个月前
DAY 1
AT_arc070_d [ARC070F] HonestOrUnkind
询问次数为 ,考虑 找到一个诚实的人,再用 询问其他人。
- 发现如果诚实的人不诚实的人数量,无解。
- 如果询问结果是 ,则说明这两个人必有一个是撒谎的人。
- 如果询问结果为 ,则两个可能都是真,都是假,或一真一假。
因为现在保证了诚实的人数量大于不诚实的人的数量,所以考虑用一个队列维护现在询问过的人,用队列中最靠后的去询问未被询问的人。如果输出 ,则删除这两个,否则就加入。这样就保证了队列中的诚实的人数量比不诚实的人的数量多,最后队列中一定会剩下一个诚实的人。所以就做完了。
P11050 [IOI 2024] 消息篡改者(暂无法评测)
神秘题目
经典猜数,询问范围,返回 ,但是交互库有可能返回仅一次错误答案。
询问次数就满分。
部分分一
每次询问两遍,发现不一样后,后面直接二分,可以通过 的数据。
部分分二
每询问 次 一次是否被骗,如果是,后续直接二分,否则继续。
为什么是 次呢?我也不知道,可能要通过计算吧?
猜想
询问时取中点可能不是最优,还需要DP。
次方时候可以跑的比方法二快,大了后就g了。
老鼠进洞
题面
一个大小为 的环上有 只老鼠和 个洞,每个洞最多容纳一只老鼠,求 个问:所有老鼠都进洞的最小总距离和方案数。
弱化版
先考虑在一个数轴上,然后

上面是i代表老鼠,下面是i代表洞
正解
断环为链,费用流
老鼠进洞again
树上,老鼠最多只能走 步,每一个深度为奇数的点上有老鼠,深度为偶数的点上有一个洞。求最多能让多少只老鼠进洞。
方法一
反悔贪心+模拟费用流。。。虽然我不会。。。
给每个老鼠和洞排序,先往左匹配,老鼠i进洞j,然后推了个费用流式子。
方法二
DP
打怪
有 只怪物,第 i 只怪物的攻击力为 ,血量为
现在你需要生产机器人来打败这些怪物,具体地,你可以生产 个机器人,
第 j 个机器人的攻击力为 ,血量为 。生产完之后,你可以让机器人和怪物战
斗,战斗规则如下:
每一步,你挑选一个机器人 ,并选择一个怪物 作为对手,接下来两个人会开启战
斗,战斗一轮一轮进行,每一轮,双方会同时发起攻击,令 ,同时
。如果这一轮结束双方血量仍然 > 0 则继续下一轮。直到有一方血量
则当前轮结束,血量 的机器人或怪物出局,血量 的可继续参与后续战
斗。
现在你可以决定机器人的数量 、每个机器人的 ,同时决定战斗策略(你
可以任意安排你的机器人和怪物的战斗顺序)。你的目标是不败(即不能出现机器人
全部出局但怪物还有剩余的情况)。平局是可以接受的(即最后一个机器人和怪物同
时出局)
生产机器人的代价为 ,你的任务是在保证不败的前提下,让代价
最小。
,
做法
关键性质:不会有两个机器人都用来打超过一个怪物
这样,我们可以枚举这个机器人的攻击力
打怪2
一个 采用回合战斗,怪物只有一种,但是个数无限多,小 初始攻击力为 ,
防御力为 .
小 的生命也是足够多。每消灭一次怪物,小 可以得到一个金币,这个金币可
以增加 攻击或 防御,
回合规则如下:小 攻击一次怪物,然后怪物攻击小 ,伤害为对方的攻击减去己
方的防御,如果这个值小于零,则不造成伤害。当怪物生命为 时,战斗结束。
小 总有一个时候会变得无敌,但是小 想知道在变无敌之前至少承受多少伤害。
怪物攻击力为 ,生命值为
做法
贪心策略:一定是先加攻击再加防御
Proof.
假定有一种策略中间存在加了若干次防御后加了攻击,并且这个策略优于整体先加
攻击再加防御的策略,则分为以下三种情况
这若干次攻击没有加到下一个临界点,这将导致这些攻击没有任何作用,显然
成立
这些次攻击保证在加最后一次的时候改变了临界点
设加攻击前被对方攻击的次数为 ,加攻击后被对方攻击的次数为 ,加攻击为
次,设这些次防御一次减少伤害的比例为 ,总共加了防御 次,显然 , 则有
以下情况
这种情况下说明攻击带来的影响更大,但又可以看出影响大的
放到前面具有更大的优势,减少的伤害相对更多
这种情况下防御影响的更大,这样将攻击改成防御具有更大的
优势
再使用数论分块,找到何时更改到加防御
打怪3
现在有 种圣物,其中第 个圣物的价格为 碎片。你想把这 种圣物全买一遍,
其中有两种购买方式:
花费 碎片购买第 种圣物。
花费 碎片进行抽奖,可以等概率随机获得这 种圣物中的一种,如果获得了
已经获得过的圣物,则会还给你 碎片。
现在求最优策略下,得到这 种圣物的最小期望花费。
solve
先抽再买
证明:首先购买一定是买当前 最小的圣物。考虑相邻两次操作,如果先购买再抽
奖,注意到本题的随机规则和决策是无关的,那么我们可以当成,在游戏开始之前,
每次抽的结果就已经确定了
那么分情况讨论:
- 如果下一次抽奖抽到的就是 最小值,则如果先买再抽,我们就白买了
- 如果下一次抽奖抽到的不是 最小值,则交换两次操作不影响结果
根据结论就可以 了
表示抽了 张卡, 之和为 的概率,对 跑01背包。
假设当前已经拥有了 种,已经拥有的 之和为 ,假设如果选择抽,抽中的下一个圣物是 ,那如果选择买,也买 。比较两个平均值的大小,算期望。
染色
个点的树,每个点染一个 的颜色,求
的方案数。
练习题
给定一棵 个点的树,接下来有 次操作
每次操作添加一条路径或者删除一条之前添加的路径
定义点到路径的距离为到路径最近的点的距离,定义 ) 为 到当前所有路径的距
离的最大值
每次操作之后,你需要回答
性质
两个最远路径的距离的和的一半,但是不好维护。
考虑一个路径集合
- 如果这个集合有公共交集,则, 到交集的最短距离,可以直接维护交集 (实现时也可以找到集合中两条交最小的路径,使得两条路径的交恰好是所有路 径的交)
- 如果这个集合没有公共交集,则直接维护最远的两条路径的距离,跟直径一样 的合并方式
DAY 2
T1
对于一个字符串 ,定义 表示 的最小整周期, 即最小整
周期出现次数。
定义 表示 S 字符串第 l 个字符到第 r 个字符所构成的子串。
定义 表示 ,即 的子串中最大的 。
给定一个长度为 n 的字符串 S,你需要找一个最大的子串 ,使其具有
最大的 ,若存在多个,输出字典序最小的。
接下来给出 个询问,每次询问给定两个整数 ,你需要输出
。
solve

T2
给定 的矩阵 ,你需要构造 的 矩阵 ,满足: ,若 为 ,则 , 均为 。 满足 为奇数,若 为 ,则 均为 。 满足 为偶数,若 为 ,则 均为 。 对于 或 ,我们钦定 你需要最大化 。
solve

T3
暑假来了,小 想要吃冰棒。
小 知道 家售卖冰棒的商店,它们被依次编号为 到 。这些商店的老板都十分任性——他们每天售卖的冰棒口味并不相同。小 只喜欢西瓜味的冰棒,因此他早就做好了调查。小 的调查结果形如 个有理数序列,其中第 个序列的长度为 ,且它的第 项记作 。为了方便起见,我们给出的值为 ′,它是 对 取模的结果,可以说明在本题限制下这不会影响求解的过程。此外, 均从 开始标号。小 的暑假长达 天。对于商店 ,在第 天,它售卖西瓜味冰棒的几率为。小 每天都会前往所有商店购买冰棒,如果其中至少一个商店售卖西瓜味冰棒,小 就会开心。现在,小 想要知道:他开心的日子占整个暑假的比例的期望是多少?为了方便你的计算,他只需要你告诉他这个答案对 取模的结果就好了。
solve

AT_agc039_f [AGC039F] Min Product Sum
相当不好处理,我们考虑如何转化?
直接考虑它的组合意义,那么变成了计算两个矩形 的数量满足 中的每一个元素都小于 中对应行 列最小值的方案数。再转化一下,发现这个条件等价于计算两个矩形 的数量满足
- 中每一行的最大值 中对应行的最小值。
- 中每一列的最大值 中对应列的最小值。
那么这个东西看起来就比较能 了,我们容易想到从小到大扫 值域,那么对于 一个位置的限定我们希望独立开来。
也就是发现你在一个矩形中又确定行又确定列并不好处理。
所以考虑 状态设计成 表示当前矩形填了 的数,确定了 中 行的最大值, 中 列的最小值的方案数。转移考虑 这些元素填在什么地方,分两步确定一些 中的行的最大值为 。 中对应行已确定列的位置填 。 中对应行未确定列的位置填 (一定有一个 )。确定一些 A 中的列的最小值为 。 中对应列已确定行的位置填 (一定有一个 )。 中对应列未确定行的位置填 。容易发现这样的 dp 使得每个位置都能取到最严格的限制,于是分两步转移即可(在后面再
加一维)。这样就做完了,时间复杂度 。
AT_agc057_e [AGC057E] RowCol/ColRow Sort
第二题我不配
CF908H New Year and Boolean Bridges
CF1916H2 Matrix Rank (Hard Version)
P11983
P11988
QOJ9984
CF1863I
Day 3
T1
对于一个长为 的,取值范围为 的序列 ,称一个长度为 的,取值范围为 的序列 是好的,当且仅当对于所有 ,都满足 。 表示有多少个好的序列。给出一个长为 的串 ,再给出值域 ,要你求出 的所有非空子串的 之和,即
。对 取模
T2

solve

T3

solve
太臭了,一共29页的题解,感觉以现在的实力不足以听懂
CF1685E The Ultimate LIS Problem
AT_arc169_e [ARC169E] Avoid Boring Matches
P10219 [省选联考 2024] 虫洞
qoj 7765
P9531 [JOISC 2022] 复兴计划
首先我们可以感性理解一下,一条边 i 能存在的对应 X 是一段区间 ,如果我们能对于每条边 i 求出对应区间,那么问题就容易解决。
我们把边权按 w 从小到大排序,然后考虑每次加入第 i 条边。如果连接的两个端点不连通,那么直接加入这一条边。
如果连接的两个端点联通了,那么找到环上 最小的边,设其为 ,那么我们就知道,如果 ,那么我们会选择 ,否则选择 ,所以 , 。
然后我们可以 维护,或者直接 计算。
另外一个更好写的做法是直接并查集维护,可以做到 。
具体的,每次计算 的时候,让 从 到 循环,每次用并查集合并 所在连通块,
我们只需要找到连了哪个 之后 的两端联通,然后就可以 掉,每次暴力遍历 ,遍
历次数可以证明也是 的。
我们把问题转化成我们有 条边,对于 定义 表示最大的 使得 能联通
的两个端点,如果不存在则 ,那么 最大是多少。
我们把编号看成边权,那么我们每次从 变成 的时候,就是添加 的时候删除
了 ,如果一开始图被权值为 的边联通,那么我们每次相当于加入权值为 的边,删除
权值为
的边,设 为 的边权和,那么我们计算的就是
,由于 的,所以上面我们总遍历次数也是
的。
AT_arc138_f [ARC138F] KD Tree
首先直接枚举操作的分界显然会算重,那么由于一种序列有多种操作方式,一般来说我们就
有两种想法:找到序列能被得到的条件,然后对着条件 。
只考虑字典序最小的一个解,这样保证不重。
这个题我们采用第二种方法。
我们设计 状态,设 表示考虑 的点集的划分数量。然后现在的问题是我们怎样定义字典序最小。我们考虑计算给点集内点的 , 坐标排序之后交替合并起来,形如 。然后我们考虑按这个顺序划分,只计算用当前划分能达到且之前划分无法达到的状态,即当前划分作为第一个划分能到达的状态数量。
uoj75
P6816 [PA 2009] Quasi-template
Day 4
T1
有 个人排成一列,每个人有一个能力值 。
老师将会举行 次考试,第 i 次考试将只有 内的人参加。
每次考试中,对于 中的任两个人 , 若 , 则 会给 带来
的自卑值, 其中 表示异或。
该次考试产生的自卑值为其中所有人产生的所有自卑值之和。
求每次考试产生的自卑值。
solve
测试点1/2
略
测试点3~5
使用莫队并使用朴素的数据结构来维护。
也许用分块也可以。
测试点6~10
以下视 同阶。
莫队二次离线。
注意到这种莫队每次移动指针时都要进行一个查询,形如求
注意到 这个限制是可以拆成两个前缀相减的,而拆完之后这个维度的限制是简单的,可以通过离线扫描线的方式去掉这一维限制。剩下的部分就是 个单点修改, 个区间查询,可以使用值域分块平衡复杂度做到总复杂度 。
注意这里空间限制比较紧,所以不能直接离线,需要对信息进行一定程度的压缩。
T2
给你一个正整数序列 。设
.
有 张卡片。每张卡片上都写有一个整数。卡片上的整数是 。
其中,有 张卡片上写着 。
现在站在数线上的坐标 处。他将执行以下操作 次。
假设 是 的当前坐标。选择并丢弃他手中的一张牌。设 为弃牌上的数字,并
跳转到坐标 。如果他跳到了坐标 ,则获得一枚硬币。
对于每一个 ,求 的下棋顺序中使得他恰好赚到 枚硬币模数为
的个数。
您应该计算走棋顺序。也就是说,如果两张牌的数字相同,弃掉其中一张与弃掉另一
张是没有区别的。
solve
首先你可以把相同的 看成不同的,最后除以系数即可。
金典恰好转钦定,求出情定恰好 次的方案然后二项式反演回去即可,设其为 。
考虑对于每部分出现的是 ,那么有 个 ,那么总方案为 ,考虑组合意义拆一下,对于每个 从同一部分选一个 ,连边,边权为 ,求所有方案边权乘积的和。
那么连边连出来会是一个基环树森林,设形成 个连通块的方案为 ,那么有 , 为第二类斯特林数。
基环树有环有树,再钦定若干个环,其他点乱连的方案。
观察换上的边 ,考察其组合意义:选取一部分点为 ,一部分点取 ,即选取若干条下标上升的链,链头取到 ,其余点取到 ,求所有方案的和。
考虑 dp,设 表示前 个点构成了 条链的方案和,最终把这些链拼成环,再乘以第一类斯特林数即可。
转移分别代表选链头,环外,链尾,复杂度 。
T3
这是一道交互题。
交互库会给出一个 个点 条边的有向无环图,你可以更改 次边(添加/删除),不
需要保证你操作完成后的图还是一个有向无环图。
然后交互库会询问你 次,每次交互库选定一个点 ,你可以给出一个可重集 ,交
互库会将 加入 ,然后在 中的点上放置棋子(个数是其在 中的出现次数),再让
红磷和白磷开始一轮游戏,并告诉你游戏结果:先手胜利/后手胜利/平局(即会进行无限
久)。
你需要回答交互库。
solve
这道题的 交互库 需要你会 有向有环图的公平博弈游戏。
我问了 GPT/ds 后,它们都给出了一个看起来很对的东西,然后和暴力根本拍不起来...
还好 GPT 给出了一篇论文链接 Extended Sprague-Grundy theory for locally nite games, and applications to random game-trees。
性质 A
发现是一个完全图,又保证了是一个 DAG,考虑此时 SG 函数是两两不同的,每次就枚举一下点,就可以确定 了。
正解
构造大神
设一个棋子局面有三种状态
W(Win)/L(Lose)/D(Draw)首先发现如果还是 DAG,一定做不了。
考虑利用环的性质,此时用上最特殊的自环,因为如果自环上有棋子,则一定不是
L 态,因为此时先手一定有一个 L 态后继(但可能是 W 态)。把图分成两个点集 ,对于 ,我们用性质 A 的方法补全成 SG 两两不同的,对于 给每个点连一个自环。
每次询问集合 内只有一个点 。
- 如果 :对 的每个点询问就行了。
- 如果 :
- 如果是
W态,则先手需要将棋子移到L态,则 在 的后继中。 - 如果是
D态,此时不管先手怎么移动,都会到W态,所以他一定让 在自环上移动。
- 如果是
所以你将 中连成完全 DAG,去掉 的边,让 中的点在 的后继集合两两不同,就可以每次询问 中的点获得答案。
理论 。
Smith Value
根据论文中的理论:
定义 表示 点上的 exSG,
转移就是 :
多个独立游戏的 exSG 合并是:
胜负判断:
- 如果
- 如果 ,先手必胜
- 如果 ,后手必胜
- 如果
- 如果 ,先手必胜
- 如果 ,平局
通过分析 exSG 的性质,也可以得出上面的方法。
CF1270I Xor on Figures
CF526G Spiders Evil Plan
CF1874F Jellyfish and OEIS
CF1874D Jellyfish and Miku
QQJ2064
AT_agc017_f [AGC017F] Zigzag
Day 5
面基滴叉!!!!!!
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...
