做题集合
T1.P10136
神秘人类智慧题。
如果离散化后的
应为鸽巢原理当
那么我们只需要枚举所有满足条件
T2.P4156
我们先求出所有
注意到这个形式是同余最短路的形式,所以我们考虑使用同余最短路来解决。但是直接做是
此时抛出一个定理:一个字符串排序之后,必定有一种划分序列的方式,使得所有的序列均为等差序列,且序列个数为
那么根据
我们发现一个环中
那么剩下的为题就是怎么两个不模数的转移。假设现在的模数为
时间复杂度为
T3.P9197
考虑连续段 dp。
我们把
此时我们设计
转移就很简单了:
-
作为首尾,开新段:相邻一个数,但是没有填,价值为
。 -
作为首尾,接着另一个段:相邻与个数,填了,价值为
。 -
不作为首尾,开新段:相邻两个数,但是都没有填,价值为
。 -
不作为首尾,连接两个段:相邻两个数,都填了,价值为
。 -
作为首尾,接在一个段的后面:相邻两个数,一个没有填,一个填了,价值为
。
然后直接转移即可。
T4.AT_agc001_e
首先我们知道
但是这样子还是不能解决,应为我们还是要枚举终点才能知道。
此时我们考虑变为从
那么这样就只会有
此时我们定义
那么答案即为
当然为了防止负数溢出,所有的坐标
T5.AT_agc043_d
好玩的。
假如这个序列为
这样我们可以把下降的一段用第一个数字代替。这样这个操作就是正常的排序了。
那么一个长度为
-
一个长度为
的下降子序列。 -
一个长度为
和一个长度为 的下降子序列。 -
三个长度为
的下降子序列。
那么我们此时设计 dp,其中
T6.AT_arc070_c
Slope Trick!
先有个朴素的 dp:我们定义
然后因为
具体的,我们维护斜率大于
T7.神秘
我们考虑定义
那么就有:
其中
假若我们可以将
T8.AT_abc236_f
基本不会线性基了,做几道练练手。
既然要代价最小,那么先将代价从小到大排序。排完序后,我们将下标插入线性基,如果可以插入,那么就加上这个下标对应的代价,否则跳过。
T9.神秘2
我们发现如果维护每一个点肯定是不现实的。
但是我们发现同一层的点的情况是相同的。一就是说一个点跟深度有关,和位置无关。然后我们发现有区间操作,于是考虑用线段树来维护。
然后我们发现一个点
T10. P7470 [NOI Online 2021 提高组] 岛屿探险
我们可以发现这个东西可以拆成很多个子问题,然后累计合并,这个东西可以使用线段树合并来做。
先考虑
-
,那么 和 的第 位必须相等,否则 ,然后直接往这个方向走即可。 -
,那么此时 和 的第 位任意取都行。那么就有两种可能:- 如果
和 的第 位不一样,那么此时 依然等于 ,所以我们向这个方向继续走即可。 - 如果
和 的第 位一样,那么此时 就会一定小于 了,那么对于答案的贡献就是这个子树里 的个数之和。
- 如果
这一部分就是 CF817E。比较简单。
接下来我们考虑
前面的是对于
具体的我们只需要把
当然我们不能每一次都建
然后我们考虑如何优雅的计算多组数据。
首先我们将
当然此时两个指针都往右移动。
T11.The Third Grace
*3200。首先你需要知道 KTT,不会的话请做 P5693。
考虑 dp。我们定义
应为我们不会算当前点的贡献,所以我们可以增加一个虚点
然后我们考虑如何转移。
我们枚举下一个激活的点的位置。因为我们现在加的是
然后扫描线一下,对于所有的
接着我们发现贡献的式子是一个一次函数
-
全局求
。 -
对于一个区间
,让里面的所有 都加上 。 -
单点修改
。
我们用 KTT 来维护这些一次函数,时间复杂度为
T12.P10120
老大过得还好吗?
我们定义
然后我们就发现第一个操作就等价于:
那么对于这个操作,我们只需要维护一颗线段树,支持区间推平和区间加即可。
接下来考虑第二个操作,我们考虑到哪一种节点就不用往下搜了。
这是简单的:只要这个子树里面
剩下的就正常做即可。
T13.AT_agc023_f
应为删点不好做,所以我们套路的变为合并。那么这题就变为:最初有
假设点
所以我们按照
T14.CF1936B
有趣的题目。
先考虑
在此我们以
我们记
那么总路程就是
T15.P9200
考虑暴力枚举
此时我们记
那么我们要求的答案就是
但是我们发现直接处理绝对值是一件很难的事情,所以我们考虑用几何意义吧绝对值拆开来。那么上面那个式子的几何意义就是在数轴上有
那么我们只需要选出来这
T16.P6947
前置知识:Voronoi 图
- Voronoi 图把平面划分成
个多边形域,每个多边形内只有一个生成元 - 每个多边形内的点到该生成元距离短于到其它生成元距离
- 多边形边界上的点到生成此边界的两个生成元的距离相等
接下来考虑如何得到一个 Voronoi 图。
这是十分显然的,我们只需要求出一个点和其余点的中垂线半平面的交。
这个过程需要求
首先一个半径
很明显,我们最终的答案就是
此时我们钦定
所以我们只需要找到里
接下来我们可以对
-
某个
-
Voronoi 图的某个多边形的顶点
-
Voronoi 图和
的交点
那么此时我们直接用
-
为
-
对于 Voronoi 图的顶点最多有
个,所以我们只需要用 的时间判断点是否在多边形内部,然后统计答案即可。时间复杂度 。 -
这样的点显然在多边形内部 (含边上),直接更新即可。时间复杂度
。
最终时间复杂度为
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话