摘要:
分析 考虑贪心,每次尽量选最小的字符。 显然是每次选字典序最小的弹栈。 我们要比较的是每个栈的字典序,但是朴素比较是 \(O(L)\) 的,考虑将它优化到 \(O(1)\)。 这个时候我们可以先离散化然后套路地将所有串拼一起跑 SA。 记得在每个串之间加分割符。 这样每次比较字典序就变成了 \(O( 阅读全文
posted @ 2024-09-24 16:33
Jimmy-LEEE
阅读(10)
评论(0)
推荐(0)
摘要:
题意 维护一张无向图,要求支持以下操作: 切断一条边。 查询两个点是否有有两条完全不同的路径相连。 分析 因为断边操作不好维护,考虑离线后将断边变为加边。 因此,我们只需要维护加边操作即可。 考虑使用 LCT。 首先,因为涉及到边权,套路地用节点代替边。 如果某一条边连接的两个点属于两个不同的连通块 阅读全文
posted @ 2024-09-24 16:32
Jimmy-LEEE
阅读(28)
评论(0)
推荐(0)
摘要:
分析 前置知识:网络流,最小割。 套路题。 在这道题基础上有很多改版,比如长脖子鹿放置。 首先黑白染色。\((n=m=4)\) 保证染色后同种颜色上的骑士不能互相攻击。 1 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 染色之后考虑将原题转化为最小割问题。 也就是说在棋盘上放满骑士后再 阅读全文
posted @ 2024-09-24 16:31
Jimmy-LEEE
阅读(8)
评论(0)
推荐(0)
摘要:
题意 维护一个 \(D\times S\) 的平面,每个点有一个高度。 要求支持一个操作:查询一个矩形区域的最大值,并将该区域更新为最大值加上给定的数。 分析 发现 \(D,S\leq10^3\),考虑使用二维线段树维护。 二维线段树,顾名思义,就是在普通线段树的每一个节点上维护一棵线段树。 在本题 阅读全文
posted @ 2024-09-24 16:30
Jimmy-LEEE
阅读(8)
评论(0)
推荐(0)
摘要:
分析 显然答案包含长度为 \(K\) 的所有 \(01\) 串,每个串和前一个的重叠长度为 \(K-1\),所以每个串对长度的贡献为 \(1\)。 因此该串的长度为所有 \(01\) 串的个数,即 \(2^K\)。 考虑第二个如何解决。 发现每个位置的状态只有 \(0\) 和 \(1\),考虑爆搜。 阅读全文
posted @ 2024-09-24 16:30
Jimmy-LEEE
阅读(17)
评论(0)
推荐(0)
摘要:
分析 设 \(a[i]\) 为第 \(i\) 位的人的编号,\(\operatorname{pre}(i)\) 为第 \(i\) 位前一个的人。 记 \(cnt\) 为满足 \(a[\operatorname{pre}(i)]+1=a[i]\) 的 \(i\) 的个数。 显然当 \(cnt=n-1\ 阅读全文
posted @ 2024-09-24 16:30
Jimmy-LEEE
阅读(21)
评论(0)
推荐(0)
摘要:
题意 给定一个 \(r\times s\) 的矩阵,每个点给定一个权值,要求求出一个子矩阵,其权值和为 \(w\),使 \(|w-a|+|w-b|\) 最小。 分析 考虑枚举子矩阵。 首先预处理二维前缀和用于快速计算矩阵和。 可以暴力枚举左上角 \((x_1, y_1)\) 和右下角 \((x_2, 阅读全文
posted @ 2024-09-24 16:29
Jimmy-LEEE
阅读(12)
评论(0)
推荐(0)