近期总结 2024.2.9

CF1508D Swap Pass#

题意:平面上有 n 个点,满足任意三点不共线。每个点有 ai 且构成 1...n 的排列。每次执行一种操作:选择两个点 i,j,交换 ai,aj,然后在平面上点 i,j 之间画一条边。求出一种让 a1...n 排序的操作方案,满足画出来的边两两不相交,但是可以交于一条边的端点。 1n2000


排序就是使得最终 i, ai=i

考虑一个排列由若干个环组成。对于一个环,我们构造一种方案:

  • 任意选择一个点 s

  • 然后从 s 指向的点开始,依次令 s 与环上的点交换

显然,这样操作满足要求,且画出来是一个类似于菊花图的样子。

但是如果有多个环很不好处理,考虑两个不同环的点,我们交换他们,可以使他们所在的环合并成一个大环。

因此,我们尝试依次通过上述方法合并所有的环,最后直接操作这个环。

首先合并完后,我们仍然是选择一个点 s,然后连菊花图。

由于不能相交,这启示我们通过交换图上相邻两个点来合并环。

每个点按与 s 的极角排序,然后每次判断相邻两个点是否在不同的环,然后逐一交换,最后连个菊花图。

时间复杂度 O(nlogn),瓶颈在排序。


CF704D Coptain America#

题意:平面上有 n 个点,坐标为 (xi,yi)。每个点可以染成红色或蓝色,代价分别为 r,b。有 m 条限制,每个限制为一条 x=ly=l 的直线上,染红的点与染蓝的点数量之差的绝对值 d,求最小染色总代价。 1n,m105


首先钦定 rb,我们先假设所有点染红,这是最小可能代价。

但是有限制,我们需要把一些点变色。发现每个限制都可以变为:一条线上的点变色数量必须在一个特定范围(一个区间)。

把行看作左部点,列看作右部点,就很像二分图最大匹配。唯一的区别是一个点能匹配多个,且匹配次数限制在一个区间。

转网络流,其实就是有源汇上下界最小流。


CF1037H Security#

题意:给出一个字符串 S,有 m 次询问。每次给出 l,r 和字符串 T,问在 S 中选取一个字典序最小的在 [l,r] 中的子串,且字典序比 T 大,求出这个子串。 1|S|105, 1m2×105, 1|T|2×105,字符串都由小写字母组成


考虑答案一定是 T 的一段前缀,在加上比 T 后面第一个字符大的一个字符,且满足这一段前缀尽量大。

建立 SAM,然后一步一步在 SAM 上走,每次走一个字符。

枚举前缀,枚举下一个字符,找到 SAM 上对应的结点,我们需要判断是否存在这样的字符串。假设有共 i 个字符,存在的条件是有一个结尾位置在 [l+i1,r] 的串,直接在 parent tree 上线段树合并即可,时间复杂度线性对数。

出处:https://www.cnblogs.com/Sktn0089/p/18012547

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   Lgx_Q  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示