摘要:
题意 给定一个主串 \(S\) 和 \(n\) 个询问串,求每个询问串的所有循环同构在主串中出现的次数总和。 分析 后缀自动机好题。 循环同构的过程可以看作从该串的头部删除一个字符,并在尾部加入一个字符。 在后缀自动机上,跳 parent 树的过程就相当于删除头部的若干个字符。 所以我们可以套路地把 阅读全文
posted @ 2024-08-25 21:07
Jimmy-LEEE
阅读(25)
评论(0)
推荐(0)
摘要:
题意 实现以下两种操作: 往点集 \(S\) 中添加一个点 \((x,y)\)。 询问点 \((x,y)\) 是否在点集 \(S\) 的凸包中。 分析 动态凸包板子。 建议先完成 P2521 [HAOI2011] 防线修建。 上题维护的是上半个凸包,本题维护上下两个。 将凸包中的点按 \(x\) 排 阅读全文
posted @ 2024-08-25 21:07
Jimmy-LEEE
阅读(16)
评论(0)
推荐(0)
摘要:
题意 给定若干个点,实现下列操作: 删除一个点。 查询上凸包的周长。 分析 建议先完成【模板】二维凸包。 对于这个删除操作,我们没有好的方法去在线维护它。 考虑离线询问。 这样删除操作就变成了插入操作。 插入一个新点有如下两种情况: 新点在凸包内。 新点在凸包外。 我们回忆一下 Andrew 算法的 阅读全文
posted @ 2024-08-25 21:06
Jimmy-LEEE
阅读(18)
评论(0)
推荐(0)
摘要:
题意 现有一座上下起伏的山。它可以抽象为一个包含 \(n\)(\(n\) 为奇数)个点 \((x_i,y_i)\) 以及 \((x_1,-\inf)\) 与 \((x_n,-\inf)\) 的多边形。 对于所有满足 \(i \neq 1\),\(i \neq n\),\(i \bmod 2=1\) 阅读全文
posted @ 2024-08-25 21:06
Jimmy-LEEE
阅读(33)
评论(0)
推荐(0)
摘要:
题意 将区间 \([m,n]\) 的所有整数按照其二进制位表示的数中 \(1\) 的数量从小到大排序。如果 \(1\) 的数量相同,则按照数的大小排序。求序列中第 \(k\) 个数。 其中,负数使用补码来表示:一个负数的二进制数与其相反数的二进制数之和恰好等于 \(2^{32}\)。 分析 考虑用 阅读全文
posted @ 2024-08-25 21:06
Jimmy-LEEE
阅读(20)
评论(0)
推荐(0)
摘要:
题意 有一个 \(n \times m\) 的数组 \(x_{i,j} (1 \le i \le n, 1 \le j \le m)\),满足: \(x_{i,j}\in[0,m]\) \(\forall i \in [1,n],\forall j\in[1,m),x_{i,j}<x_{i,j+1} 阅读全文
posted @ 2024-08-25 21:05
Jimmy-LEEE
阅读(29)
评论(0)
推荐(0)
摘要:
题意 给定词典 \(\text{U}\),每次询问读入一个字符串 \(s\),以及一个整数 \(x\) 对于这个字符串有以下几种情形: 设\(s_i \in \text{U}\) 且 \(s\) 为 \(s_i\) 的前缀的个数为 \(a\)。 当 \(a\ge x\) 时,请输出按照以输出次数从大 阅读全文
posted @ 2024-08-25 21:05
Jimmy-LEEE
阅读(28)
评论(0)
推荐(0)
摘要:
分析 先看删边操作。 由于并不保证是森林,所以我们没有好的方法来在线维护删边相关的操作。 所以,我们可以套路地把询问离线,然后倒着操作。 删边变成加边。 需要注意的是权值的修改,记录时要把当前权值和修改的权值反过来。 然后我们发现这个操作很经典,维护方式和 [HNOI2012] 永无乡 差不多。 可 阅读全文
posted @ 2024-08-25 21:04
Jimmy-LEEE
阅读(15)
评论(0)
推荐(0)
摘要:
题意 给定序列 \(a\),每次操作可以使 \(a_i\gets a_i^2\),求使 \(a\) 不降的最少操作次数。 分析 因为 \(1^k=1\),所以无解的情况只有 \(\exists\ a_i=1\) 且 \(\exists\ j\in[1,i), a_j>1\)。 在有解的情况下,假设对 阅读全文
posted @ 2024-08-25 21:04
Jimmy-LEEE
阅读(20)
评论(0)
推荐(0)
摘要:
题意 给定 \(n\) 个长度为 \(1\) 的序列,第 \(i\) 个序列中有一个元素,值为 \(a_i\),接下来有三种操作: M x y,表示把 \(x\) 所在的序列放到 \(y\) 所在的序列之后。如果 \(x,y\) 已经在同一个序列,则不进行操作。 D x,表示把 \(x\) 所在的序 阅读全文
posted @ 2024-08-25 21:03
Jimmy-LEEE
阅读(20)
评论(0)
推荐(0)
摘要:
提供一种和第一篇题解不同的理解思路。 题目分析 看到操作 \(1\):拿 dfs 序水水就行了。 看到操作 \(2\):??? 特殊情况 我们考虑一下特殊情况下操作 \(2\) 怎么处理。 假如这棵树是一条链。 设从根到叶节点权值如下:(随便赋的) 节点编号 1 2 3 4 5 6 权值 1 2 3 阅读全文
posted @ 2024-08-25 21:03
Jimmy-LEEE
阅读(42)
评论(0)
推荐(0)
摘要:
题意 给你一个 01 串,要求完成以下操作: 单点插入。 单点删除。 区间翻转。 查询两点开始的 LCP。 分析 先看查询操作,如何得到 LCP 的长度? 我们可以考虑二分长度 \(l\),然后用哈希检验区间 \([p1, p1+l-1]\) 是否等于区间 \([p2, p2+l-1]\)。 平衡树 阅读全文
posted @ 2024-08-25 21:02
Jimmy-LEEE
阅读(12)
评论(0)
推荐(0)
摘要:
题目分析 题意 给定 \(n\) 个字符串,要求从中选出若干个组成一个集合,且集合中每个字符串都互不包含。 求集合中字符串的权值的和的最大值。 分析 首先很容易想到用 KMP 判两个串是否存在包含关系。 考虑建图,将不能同时存在于一个集合中的串的节点相连。 然后发现只需求出这个图的最大权独立集就行了 阅读全文
posted @ 2024-08-25 21:01
Jimmy-LEEE
阅读(17)
评论(0)
推荐(0)
摘要:
题目分析 题意 给定 \(n\) 个字符串,要求从中选出若干个组成一个集合,且集合中每个字符串都互不包含。 求集合最大包含几个字符串。 分析 本题弱化版:[ABC354G] Select Strings 就是求一个最长反链,并求构造方案。 求构造方案还是比较有意思的。 建议先做 P4298 [CTS 阅读全文
posted @ 2024-08-25 21:01
Jimmy-LEEE
阅读(19)
评论(0)
推荐(0)
摘要:
题意 维护一个字符串,支持以下操作: \(\texttt{I x c}\),在第 \(x\) 个字母后面插入一个 \(c\)。 \(\texttt{D x}\),删除第 \(x\) 个字母。 \(\texttt{R x y}\),反转当前文本中的区间 \([x,y]\)。 \(\texttt{P x 阅读全文
posted @ 2024-08-25 21:00
Jimmy-LEEE
阅读(32)
评论(0)
推荐(0)
摘要:
题意 给定 \(m\) 个元素的序列 \(b\) 。 取若干 \(b\) 中元素组成新序列 \(a\) 使得 \(a_1<a_2<a_3<\dotsc<a_{i-1}<a_i>a_{i+1}>\dotsc>a_{|a|-1}>a_{|a|}\)。 给出一种使得 \(|a|\) 最大的方案。 分析 考 阅读全文
posted @ 2024-08-25 21:00
Jimmy-LEEE
阅读(15)
评论(0)
推荐(0)
摘要:
题意 鉄道旅行 (Railway Trip) 分析 非常神仙的倍增做法。 我们设 \(l_{i,j}\) 表示从 \(i\) 点出发,停靠 \(2^j\) 站后能抵达的最左位置。 同理设 \(r_{i,j}\) 表示从 \(i\) 点出发,停靠 \(2^j\) 站后能抵达的最右位置。 考虑如何更新这 阅读全文
posted @ 2024-08-25 20:59
Jimmy-LEEE
阅读(38)
评论(0)
推荐(1)
摘要:
三倍经验: UVA11996 Jewel Magic P4036 [JSOI2008] 火星人 题意 维护一个字符串 \(S\),支持以下操作: \(Q\ i\ j\):输出 \(\operatorname{LCP}(S[i \dots l], S[j \dots l])\) \(R\ i\ cha 阅读全文
posted @ 2024-08-25 20:59
Jimmy-LEEE
阅读(30)
评论(0)
推荐(0)
摘要:
题意 走廊上有排成一列的 \(n\) 盏灯,给出了一个 \(01\) 串 \(S\) 表示其开关状态(\(1\) 表示打开,\(0\) 表示关闭)。现在想要把这 \(n\) 盏灯变成目标状态 \(T\)。 你有三种操作: OFF 操作:选择一个区间,将区间内所有的灯关闭。 ON 操作:选择一个区间, 阅读全文
posted @ 2024-08-25 20:59
Jimmy-LEEE
阅读(21)
评论(0)
推荐(0)
摘要:
题意 给定一个 \(1\sim n\) 的排列 \(a\)。 对于一个整数 \(k\in[1,n]\),将排列中 \(\leqslant k\) 的项构成的子序列建大根笛卡尔树。这棵笛卡尔树的所有节点的子树大小之和记为 \(s_k\)。 \(\forall k\in[1,n]\),\(s_k\)。 阅读全文
posted @ 2024-08-25 20:59
Jimmy-LEEE
阅读(31)
评论(0)
推荐(0)
摘要:
解法 因为 \(n\leq 7\),所以可以对于每个 \(n\) 进行搜索。 定义 \(dp_{i,j}\) 为长度为 \(i\),各数位之和为 \(j\) 的数的个数。 暴搜处理 dp 数组。 void dfs(int n, int sum, int mx) { if(!n) return dp[ 阅读全文
posted @ 2024-08-25 20:58
Jimmy-LEEE
阅读(28)
评论(0)
推荐(0)
摘要:
解法 一组询问 先考虑一个简化版的情况,如果只有一组询问怎么处理。 那不直接打暴力 可以考虑一个常见的技巧:每个位置赋一个颜色 \(c_i\),满足: \[c_i=\begin{cases} 1 & h_i>x\\ 0 & h_i\leq x \end{cases} \]这样我们就把原来的序列变成了 阅读全文
posted @ 2024-08-25 20:58
Jimmy-LEEE
阅读(80)
评论(0)
推荐(0)
摘要:
解法 模拟题意即可。 先按组长评出的顺序赋上得分。 然后将其他成员给出的评分进行排序,然后赋上相应的得分。 这一步可以使用 pair<int, int> 进行存储。 最后再按总得分为第一关键字,成员评分为第二关键字排序。 这里可以用自定义结构体存储。 按题意输出即可。 Code #include<b 阅读全文
posted @ 2024-08-25 20:58
Jimmy-LEEE
阅读(38)
评论(0)
推荐(0)
摘要:
题目描述 P3191 HNOI2007 紧急疏散EVACUATE 题目解法 看到数据范围:网络流 看到求时间:二分或分层 再看到给出的数据:BFS 所以我选择网络流+分层+BFS 建图 首先每个空地 \((i,j)\) 都有一个人,所以从源点 \(s\) 连一条流量为 \(1\) 的边到 \((i, 阅读全文
posted @ 2024-08-25 20:58
Jimmy-LEEE
阅读(31)
评论(0)
推荐(0)
摘要:
题目分析 题意 给一张全白的图,每次可以将一个四联通块染黑或染白,求转化到目标最少染色次数。 分析 考虑倒着想,由目标染回原图。 易得倒着染回去和正着染的最少染色次数相同。 所以我们考虑从最后的图入手。 考虑从某一个点 \((i,j)\) 开始染色。 尝试进行建图。 在同样的颜色间转移的代价是 \( 阅读全文
posted @ 2024-08-25 20:57
Jimmy-LEEE
阅读(21)
评论(0)
推荐(0)
摘要:
题目分析 题意 题干很丑陋 于是自己转换了一下问题: 可以考虑成倒着跑,从 \((1, 1)\) 出发,方向向右,抵达 \((n, m+1)\)。 每次遇到 # 可以以 \(1\) 的代价更换方向。其余情况均只能以原方向前进。 求最小代价。 分析 考虑分层图最短路。 每一层只能沿一个方向移动,边权为 阅读全文
posted @ 2024-08-25 20:57
Jimmy-LEEE
阅读(18)
评论(0)
推荐(0)
摘要:
题目描述 P6743 BalticOI 2014 Day2 Senior Postmen 题目解法 看到题目想到直接爆搜。 根据题意,只要找出所有互不相交的简单环即可。题目保证了合法性。 跑 dfs,每次到达一个点 \(u\) 就将其放入栈 \(stk\) 中。如果栈 \(stk\) 中已经有点 \ 阅读全文
posted @ 2024-08-25 20:57
Jimmy-LEEE
阅读(67)
评论(0)
推荐(0)
摘要:
CF1746F Kazaee 题解 题目描述 CF1746F Kazaee 题目解法 看到题目能想到一个相当劣的树状数组做法:先离散化,然后对每个数开个树状数组,每次查询区间内每个数的个数。 这个做法相当劣,修改 \(O(\log{n})\),查询 \(O(n\log n)\),总的复杂度为 \(O 阅读全文
posted @ 2024-08-25 20:56
Jimmy-LEEE
阅读(34)
评论(0)
推荐(0)
摘要:
P8575 「DTOI-2」星之河 题解 题目描述 P8575 「DTOI-2」星之河 题目解法 看题目就能感觉到是一道求偏序的题。所以我们先找偏序关系。 \(Red_i\) 和 \(Blue_i\) 的关系题面已经给出,现在考虑子树关系。 自然而然地联想到 dfs 序。 先求出每个点的 dfs 序 阅读全文
posted @ 2024-08-25 20:56
Jimmy-LEEE
阅读(22)
评论(0)
推荐(0)
摘要:
CF1494B Berland Crossword 题解 题目描述 CF1494B Berland Crossword 题目解法 思路 不难发现,会导致行和列互相干扰的格子只有矩阵角上的四个格子。 共有 \(4\) 个格子,有 \(2^4=16\) 种情况。 可以暴力枚举所有情况。 每次只需要判断该 阅读全文
posted @ 2024-08-25 20:56
Jimmy-LEEE
阅读(16)
评论(0)
推荐(0)
摘要:
CF58D Calendar 题解 题目描述 CF58D Calendar 题目解法 暴力题。 我们发现输出的字符串中除了每一行最后一个串没有分割字符,其余的都有。 并且每一行只会有两个字符串。 我们可以在每个输入的字符串后面加上分割字符后再进行排序,这样可以保证字典序最小。 每次枚举一个字符串,找 阅读全文
posted @ 2024-08-25 20:55
Jimmy-LEEE
阅读(16)
评论(0)
推荐(0)
摘要:
CF237B Young Table 题解 题目描述 CF237B Young Table 题目解法 题目中要求满足以下条件: 对所有的 \(i,j (1< i\leq n,1\leq j\leq c_i)\),满足 \(a_{i,j}>a_{i-1,j}\) 对所有的 \(i,j (1\leq i 阅读全文
posted @ 2024-08-25 20:55
Jimmy-LEEE
阅读(25)
评论(0)
推荐(0)
摘要:
CF895B XK Segments 题解 题目描述 CF895B XK Segments 题目解法 朴素想法 最简单的想法就是枚举二元组 \((i,j)\) 的第一项 \(i\),然后再枚举 \(j\),找到一个满足条件的 \(a_j\),然后更新答案。 很明显,该做法的时间复杂度为 \(O(n^ 阅读全文
posted @ 2024-08-25 20:55
Jimmy-LEEE
阅读(16)
评论(0)
推荐(0)
摘要:
题目 [AGC048A] atcoder < S 分析 观察目标字符串,发现对于 atcoder 这个字符串,第一位 a 是最小的字符,而第二位 t 是最大的字符。容易得到一个贪心思路。 找到第一个大于 a 的,然后和第一位交换。 找到第一个大于 t 的,然后和第二位交换。 考虑两种特殊情况。 本身 阅读全文
posted @ 2024-08-25 20:54
Jimmy-LEEE
阅读(30)
评论(0)
推荐(0)
摘要:
奇怪的构造方法居然过了... 本构造方法暂无证明,只是提供一种乱搞做法。 对于奇数的情况 首先我们从样例入手(为 \(5\) 的情况): 1 2 3 4 2 5 3 5 1 4 5 4 3 1 2 然后我们对样例进行一点改造: 1 2 3 4 1 5 3 5 2 4 5 4 3 1 2 我们将这个数 阅读全文
posted @ 2024-08-25 20:54
Jimmy-LEEE
阅读(29)
评论(0)
推荐(0)
摘要:
[ARC023D] GCD区間 upd on 2024.1.26:修正了 ST 表的时间复杂度分析。 一道数据结构维护 \(\gcd\) 的好题。 首先,大家应该都能想到一种大暴力:枚举左右端点 \(l, r\), 暴力计算 \(\gcd\) 然后开个哈希表记录每个 \(\gcd\) 出现了几次。 阅读全文
posted @ 2024-08-25 20:53
Jimmy-LEEE
阅读(36)
评论(0)
推荐(0)
摘要:
题目分析 出题人是擅长隐藏题意的 建树 首先给你一张无向图,然后指定一个根节点 \(k\),从根节点开始沿最短路到每一个节点。如果到某个节点有多条最短路径,选择上一个节点编号最短的。 考虑记录前驱的 Dijkstra。 namespace DJ { int dis[maxn], pre[maxn], 阅读全文
posted @ 2024-08-25 20:52
Jimmy-LEEE
阅读(26)
评论(0)
推荐(0)

浙公网安备 33010602011771号