4 月做题记录

P11355 Teleporters Master
题目大意
dXqwq 和 Haitang 在数轴上的两个不同的点
有
使用一个传送器会将一个人传送到与其坐标对称的点。形式化地说,一个人传送前后的位置
dXqwq 和 Haitang 会不断同时各自选择一个传送器
给定
解答
首先,假设两个人在位置
而且,容易发现:假设有三个传送器
所以肯定是先把传送器按照
然后我们发现有解的条件是什么?就是你选一些合法的相邻点二元组,记每一对相邻点的距离为
那么我们就可以对于单次询问,先二分答案,设其为
这样的话时间复杂度肯定会爆。那么我们改用整体二分。整体二分是什么呢?我们首先把所有修改和询问全部使用一个函数:void solve(int l, int r, vector<Change> chg, vector<Query> qry)
包含起来,然后将 chg
分为 qry
里面哪些符合的。若符合就把它 push
进 lqry
里面,否则 push
进 rqry
部分。然后清除 solve(l, mid, lchg, lqry), solve(mid+1, r, rchg, rqry)
。当 chg
的修改,不撤回了。然后再查询。这样就可以保证再二分的时候
但是请注意,当 solve
到一个区间,这个区间的 qry
是空的的话,那么就执行 chg
然后 return。不然会导致你的时间复杂度假!
0403T1 BFES
题目大意
小 T 有一个很有趣的键盘。
小 T 的键盘是专门为输入 T 语言——小 T 自⼰发明的某种语言而设计的。具体而言,T 语言共有
这种键盘有趣之处在于,其输入
解答
首先,我们可以判定是否无解。将每一个单词相邻的字母连边,然后使用 DFS 染色。若存在两个相邻的字母颜色相同,则无解。
然后我们就得到了一群连通块,设每一个连通块的两种颜色之差为
这是一个非常之非常之经典的问题,但是我还是不会。严重性已经过于大了。
遇到这种问题,很明显的是一个背包,如果暴力 + Bitset 做这种背包的话时间复杂度
于是优化算法。这种经典问题可以转化为多重背包。如何转化?
原题中,根据题意,所有
所以要使用二进制分组优化。
具体地说,假设元素
然后这样,0-1 背包的项数就从
P11111 [ROI2023] 生产计划
题目大意
某个国家准备制定汽车的生产计划。
该国总共有
一些城市之间通过双向道路相连,且道路网络呈树状结构。因此,如果要从一个城市到另一个城市,在不重复经过同一个城市的情况下,只有一种路径。
生产计划被定义为一个整数序列
你需要确定是否存在效率为
制定计划的过程包括两个阶段。
在第一阶段,你将获得 -1
;如果存在,输出一个非负整数
对
因为符合要求的计划可能不止一个,所以
在第二阶段,某些计划的可行性将被检查。在每个查询中,你的程序会得到一个整数 -1
;否则,你需要输出
在程序输出每个
使用交互形式强制在线。
解答
这道题其实就是让你选出一棵树的最大权独立集。这个比较的典型,可以使用树形 DP 来做。
考虑,如果给某一个点的点权一直增加
首先将所有点的点权设为
,求最大独立集为 ;然后将所有点的点权设为 ,求最大独立集为 ,则当 时,则一定有解,否则无解。
因为当我们以某一个顺序,将每一个地方的
因为我们之前是树形 DP,所以考虑再树上的顺序,即 DFN 序。这样也好换根。我们换根 DP 求得,当点
而
后面构造也根据这个来构造即可。
CF2086D Even String 最新最热
题目大意
您想构造一个由小写拉丁字母组成的字符串
- 对于每一对
和 这样的索引 ,这些索引的差都是偶数,即 。
构造任何字符串都非常简单,因此我们将得到一个由
你的任务是计算满足所有这些条件的不同字符串
所有数据的
解答
一道赛时做不出来的数数题。被两千多个人强制【数据删除】了。怎么回事呢?
假如不考虑
首先,假设有
所以,这种情况的方案数即为:
然后考虑限制。其实这个限制只是相当于钦定一些拉丁字母选偶数位,其它的选奇数位。那么,对于每一种选择,方案数其实相似,就是
那么我们需要求出有多少种选择符合条件,即一种大小
唉,这不就是上一道题,0403T1 吗。0-1背包 DP 求得即可。
然后再把
1 | void Maisolve(){ |
P3488 [POI 2009] LYZ-Ice Skates Master
题目大意
滑冰俱乐部初始有
现在有
解答
首先,最直接的想法就是直接暴力,连边,建二分图。然后当来人走人的时候,就加边删边。很容易的,会 TLE。
先说结论:这道题需要用到霍尔(Hall)定理。
Q:什么是 Hall 定理?
假设你有一个二分图。这个二分图被分成了左
、右 两部分。 左
部分能够被完全匹配的充要条件是,对于所有的 , 部分向 有连边的点数 部分的点数。 借用网上的解释,就相当于是一堆男的要和一堆女的匹配,每一个男生都喜欢一些女生。喜欢关系就相当于有连边。
那么,要让那群男的每一个人都可以匹配到自己喜欢的女生,当且仅当随便拎出来一些男生,这些男生喜欢的女生集合的集合大小都要大于这些男生的个数。
那么我们如何将这个定理套到这道题上面呢?取所有集合
容易发现,假设你取了集合
所以我们就可以得到,必须
两边同时减去
可以发现
P11392 [JOI Open 2019] 三段跳び Master
题目大意
给定数列
解答
首先,如果你考虑暴力,假设选了
之后,考虑如果你将
所以我们可以使用单调栈得出每一个位置的
所以我们就可以将这些区间离线,也将询问离线,遍历
CF1056H Detect Robots 3200
题目大意
您成功地在您完全预料到的车站出口附近找到了可怜的阿尔卡季。您把他送上出租车后,突然想到了一个问题。
您所在的城市有
你认为,如果在每两个十字路口
根据道路系统和对所有可乘坐交通工具的描述,判断司机是否可能是机器人。
简要题意:
有一张 Human
,否则输出 Robot
。
数据范围为
解答
首先,我们考虑暴力可以怎么做。假设我们知道两条路径,都是从
对于路径长度比较小的可以使用这个暴力做法,所以考虑根号分治。记
那么长路径对短路径、长路径对长路径怎么做?注意到长路径最多只有
P11160 機械生命体
题目大意
维护一个可重集
1 x
,你需要在中加入一个数 。 2 x
,你需要在中删除一个数 。保证此时 中存在至少一个 。如果存在多个 ,则仅删除一个。 3 x k v
,你需要对中所有满足 的 增加 并对 取模。 4 x
,你需要求出。保证此时 不为空。
其中
特殊的,我们在本题定义
对于所有数据,
解答
因为包含位运算,和加入数删除数操作,所以考虑 Trie。
因为包含
加入数、删除数和查询操作是简单的,考虑第三个操作,第三个操作相当于是把一个子树提取出来,然后重新插到一个地方。所以这个可以使用 Trie 分裂/合并加上 lazytag 实现。
P11343 出租车旅行 Re: Master
题目大意
IOI 国由
每个城市都有一个编号,从
在 IOI 国,不同城市的出租车费用不同。具体来说,对于每个
小明目前住在首都
对于所有输入数据,满足:
- 对于所有
, - 对于所有
, - 对于所有
, - 对于所有
,
解答
首先,我们考虑什么时候才会换乘。那么肯定是换乘后的
设
1 | for(int i=1;i<=n;i++){ |
最后因为终点不是递减的,所以对于终点还要再转移一次。时间复杂度
现在需要一个数据结构来优化转移。可以使用点分治思想,建一棵点分树,可以得到
注意因为要加上
P7357 中位数 Master
题目大意
给定一棵以
定义函数
请注意,本题中的中位数的定义与数学中的定义略有不同:这里一个长度为
定义函数
你需要依次处理
1 u
:表示一次操作,需要你将点
2 u v
:表示一次询问,需要你求出
对于第二类操作,保证每次询问均满足
你需要对于每个第二类操作,输出对应的值。
对于
解答
对于中位数,有一个求中位数使用的非常经典的 Trick:将所有
原题面可以被看作在两个子树上面选点,假设选
然后查询时的修改操作就看它是怎么修改的。我们设
P12014 牢帽 Master
题目大意
给你一个
1 x y
:连接之间的边,保证边原先不存在。 2 x y
:删除之间的边,保证边原先存在。 3 x y
:将修改为 。 4 x
:设图分为共 个连通块,求出 。
对于
解答
连边、删边可以使用线段树分治实现。
观察限制里面
而如果
细节比较少,但是注意线段树上
0418T1 mercury
原题链接:P11519 Telephone Plans Master
题目大意
CCO 国现在由唯一的电话服务商多米通提供服务。CCO 国有
但是每条电话线只能在一段时间内使用。如果在某个时刻,房屋之间存在着由电话线连接的路径,那么这两个房屋就可以互相通话。
1 x y
:在房屋和 之间添加一条电话线。保证之前没有在 和 之间添加过电话线。 2 x y
:移除房屋和 之间存在的电话线。 3 t
:计算在最后个查询这一段时间内至少有一个时刻能互相通话的房屋对数。更准确地说,记 为第 个查询之后 CCO 国的状态, 为没有任何查询之前的状态。如果是第 个查询,则计算在 这 个状态中的至少一个状态中能够互相通话的房屋对数。(注意 操作和 操作也是查询操作!)
部分测试用例会被加密。对于加密的测试用例,参数 ^=
)操作(如果还没有过类型为
解答
对于第
因为所有曾经连的边都不会成环。所以对于一个询问操作
对于加边,就是启发式合并。这个简单。
而对于删边,我们要使用启发式分裂。具体来说,就是对
P4249 剪刀石头布 Re: Master
题目大意
在一些一对一游戏的比赛(如下棋、乒乓球和羽毛球的单打)中,我们经常会遇到
有
输出剪刀石头布情况的最大值,并且需要构造任意一组可行的方案。
解答
发现对于任意一个三元组
那么一个点它对“不成环的三元组个数”的贡献有
那么我们可以只看后面那个式子:当
那么我们就可以建模:对于
然后连汇点:对于每一个点
最后求出最小费用就是后面那一项。然后构造方案就 check 一下虚点连出去的两条边的流量。
AGC034D Manhattan Max Matching Master
题目大意
斯努克正在玩红球和蓝球,他把它们放在一个二维平面上。
首先,他进行了
现在,斯努克将把
斯努克想要最大化这对小球的得分之和。请帮助他找出这两对球得分之和的最大值。
解答
对于两个点的曼哈顿距离,可以将其化成
然后建 4 个虚点,然后跑最大费用最大流就完事了。
P3679 二分毯 Master
题目大意
在二分图中,所有点被划分成了两个不相交的集合
给定一个二分图,每个点有一个正整数权值。定义一个点集的权值为其中所有点的权值之和。
给定一个参数
解答
根据广义 Hall 定理,若存在左部点集
所以我们可以分别对左、右两点集分开考虑。
先考虑左边的。根据 Hall 定理,一个点集
然后就是点权。因为每一边最多
- Title: 4 月做题记录
- Author: 11490DX
- Created at : 2025-04-02 17:06:41
- Updated at : 2025-04-24 07:48:16
- Link: https://11490dx.net/2025/04/02/R704-practice-log/
- License: This work is licensed under CC BY-NC-SA 4.0.