摘要:
分析 考虑 DP。 定义状态函数 \(f_i\) 表示处理完前 \(i\) 个字符且第 \(i\) 个字符为 \(1\) 时的最小代价。则对于 \(i\),有两种情况: \(i\) 不是第一个 \(1\),则上一个 \(1\) 的位置必定为 \(i-k\)。 \(i\) 是第一个 \(1\),没有上 阅读全文
posted @ 2024-03-07 14:31
harmis_yz
阅读(23)
评论(0)
推荐(1)
摘要:
分析 考虑莫队。 令 \(S=\operatorname{lcm}(a_l,a_{l+1},a_{l+2},\dots,a_{r-1})\)。则对于新加进来的 \(a_r\),有: \[\begin{aligned} & \ \ \ \ \ \operatorname{lcm}(a_l,a_{l+1 阅读全文
posted @ 2024-03-07 13:43
harmis_yz
阅读(64)
评论(1)
推荐(1)
摘要:
分析 考虑二分答案。 对于当前二分的答案 \(x\),设 \(cnt\) 表示 Farey 序列中 \(\frac{p}{q} \le x\) 的满足条件的数量。对于一组 \((i,j)\),若 \(\frac{j}{i}\le x\),则 \(j \le\lfloor i \times x \rf 阅读全文
posted @ 2024-03-07 13:43
harmis_yz
阅读(34)
评论(0)
推荐(0)
摘要:
分析 考虑线段树。 \(20\) 分 统计节点懒标记,在每次询问之前统一下传 \((lst,i-1)\) 的修改懒标记,\(lst\) 是上一次询问的位置。 \(40\) 分 在统一下传的过程中打标记,如果当前节点的某个儿子所在子树中没有需要下传懒标记的节点,则不更新那个儿子的内容。 \(70\) 阅读全文
posted @ 2024-03-07 13:42
harmis_yz
阅读(52)
评论(0)
推荐(0)
摘要:
分析 考虑莫队。 对于 \(a_i=k(l \le i \le r)\) 的下标集合 \(S_k\),当其加入一个新的下标 \(x\) 时,这个新下标对答案的贡献分两种情况。 第一种,\(x\) 最小。相邻从下标的间隔中产生的贡献是 \(\sum (|S_k|-i+1)\times(ans_{S_{ 阅读全文
posted @ 2024-03-07 13:42
harmis_yz
阅读(39)
评论(0)
推荐(0)
摘要:
分析 弱智题。 和这题很像。 想到 DP。定义状态函数 \(\mathit{f}_{i,j}\) 表示区间 \([i,j]\) 中的答案。这玩意直接暴力 \(O(n^3)\) 算区间 DP,能有 \(35\) 分。 考虑优化,如果定义 \(\mathit{f}_{i,j}=0/1\) 表示子串 \( 阅读全文
posted @ 2024-03-07 13:42
harmis_yz
阅读(179)
评论(0)
推荐(0)
摘要:
分析 水题,评分能有 \(2100\) 可能是因为很多人卡 E 了。 我说真的,E 好难啊。 \(n\) 只有 \(20\),考虑从状压的角度入手。定义状态函数 \(f_{s,i}\) 表示当某个字符串 \(T\) 包含了所有 \(s\) 的二进制中为 \(1\) 的下标 \(S_j\) 且 \(T 阅读全文
posted @ 2024-03-07 13:42
harmis_yz
阅读(46)
评论(0)
推荐(0)
摘要:
分析 出得很好,模板套模板,希望下次再来。 难点在于维护最后连续喝的 DS 饮料数量。设这次喝原味饮料的区间为 \([l,r]\),上一次为 \([l',r']\)。则有两种情况: \([l,r]\) 与 \([l',r']\) 不相交。如: 在 \([l',r']\) 和 \([l,r]\) 两个 阅读全文
posted @ 2024-03-07 13:42
harmis_yz
阅读(39)
评论(0)
推荐(0)
摘要:
分析 考虑乱搞。 对于求次大值,用线段树维护就行了。记录下每个区间的最大、次大值。则两个子区间的父区间的最大值就是这四个最大的,次大值就是这四个次大的。复杂度 \(O(\log n)\)。 求次大值的出现次数,乱搞就行了。因为带修,带修莫队或者分块有些麻烦。其实用线段树就行。在维护区间最大、次大值的 阅读全文
posted @ 2024-03-07 13:41
harmis_yz
阅读(28)
评论(0)
推荐(0)
摘要:
分析 考虑暴力 DP。 定义状态函数 \(f_{i,j,k1,k2}\) 表示前 \(i+j\) 个人中,有 \(i\) 个步兵和 \(j\) 个骑兵且末尾连续步兵数量为 \(k1\),连续骑兵数量为 \(k2\) 的方案数。 由于末尾连续的要么是步兵要么是骑兵,所以状态中 \(k1,k2\) 只会 阅读全文
posted @ 2024-03-07 13:41
harmis_yz
阅读(48)
评论(0)
推荐(0)
摘要:
分析 考虑 DP。 因为 \(n \le 3000\),我们可以直接枚举插针的位置。定义状态函数 \(f_i\) 表示在从左往右第 \(i\) 个小球的位置上插针的最小花费。 枚举该小球右边第一个插针的位置,则 \(i\) 到 \(j-1\) 的小球都会滚到小球 \(i\) 的位置。代价为 \(\s 阅读全文
posted @ 2024-03-07 13:41
harmis_yz
阅读(53)
评论(0)
推荐(0)
摘要:
分析 考虑 DP。 定义状态函数 \(f_{i,j}\) 表示在 \(s[1\dots i]\) 中选一个子串 \(a\),在 \(t[1 \dots j]\) 中选一个子序列 \(b\),且 \(s_i,t_j\) 必选时 \(a=b\) 的方案数。则有两种情况: \(s_i \ne t_j\)。 阅读全文
posted @ 2024-03-07 13:40
harmis_yz
阅读(25)
评论(0)
推荐(0)
摘要:
分析 分类讨论。 对 \(|p_i-p_j|+|i-j|\) 分类讨论,有: \((p_i+i)-(p_j+j)\),\(p_i>p_j \land i>j\)。 \(-(p_i-i)+(p_j-j)\),\(p_i<p_j \land i>j\)。 \((p_i-i)-(p_j-j)\),\(p_ 阅读全文
posted @ 2024-03-07 13:39
harmis_yz
阅读(31)
评论(0)
推荐(0)
摘要:
分析 考虑状压。 定义状态函数 \(f_{i,j}\) 表示在经过点的情况为 \(i\) 且最后停在点 \(j\) 的最小花费。那有:\(f_{i,j}=\min\{f_{i',k}+w_{k \to j}|k\to j\}\)。然后就过不了样例一。根据样例一,可以发现 \(f_{3,2}=f_{2 阅读全文
posted @ 2024-03-07 13:39
harmis_yz
阅读(26)
评论(0)
推荐(0)
摘要:
分析 考虑 DP。 先考虑 \(A\) 的答案。定义状态函数 \(f_{i,j}\) 表示在子串 \(S_{1 \dots i}\) 中选 \(j\) 个,且第 \(S_i\) 必选的方案数。则有:\(f_{i,j}=C_{i-1}^{j-1}\)。 再考虑 \(B\) 的答案。枚举每一个位置 \( 阅读全文
posted @ 2024-03-07 13:38
harmis_yz
阅读(35)
评论(0)
推荐(0)
摘要:
分析 参照去年普及组 T4,很显然能发现就是一个暴力最短路。设 \(dis_{i,j}\) 表示从 \(1\) 走到 \(i\) 且能得到的 \(s\) 最小为 \(j\) 时的最短路。那么答案就是 \(\min\{dis_{n,i}|1 \le i \le V\}\)。 考虑最短路转移。对于当前的 阅读全文
posted @ 2024-03-07 13:38
harmis_yz
阅读(34)
评论(0)
推荐(0)
摘要:
分析 考虑区间 DP。 定义状态函数 \(\mathit{f}_{l,r,1/0}\) 表示在 \(P_l,P_{l+1},\dots,P_r\) 这些点中,\(P_l\) 是或不是唯一(子)树根时的答案。 对于 \(\mathit{f}_{l,r,1}\),\(P_l\) 的第一个儿子一定是 \( 阅读全文
posted @ 2024-03-07 13:37
harmis_yz
阅读(23)
评论(0)
推荐(0)
摘要:
分析 和 T5 差不多的思路。把所有的绿色格子看做图上的点,对于将每个绿色格子变成红色时连通块增加的数量,实际上就是无向图中删掉某个点连通分量变化量的问题。 对于删掉某个点后连通分量变化量,有三种情况: 节点是孤点,删掉后连通分量增加 \(-1\)。 节点是割点,删掉后连通分量增加其所在点双数量 \ 阅读全文
posted @ 2024-03-07 13:37
harmis_yz
阅读(67)
评论(0)
推荐(0)
摘要:
分析 乱搞题。 右移若干次很显然可以破环成链,然后 \(l,r\) 指针在这个长度为 \(2n\) 的序列上右移。每种状态的答案就是 \([l,r]\) 的答案。 考虑相邻两种状态的变化量。设上一次 \(l'\) 指向的值为 \(p_{l'}\),则到当前状态的变化量就是:\(-\operatorn 阅读全文
posted @ 2024-03-07 13:36
harmis_yz
阅读(41)
评论(0)
推荐(0)
摘要:
分析 一道差分约束题。 我们令 \(\mathit{sum}_{i}\) 表示 \(1\) 到 \(i\) 中,\(1\) 的数量,根据题意可得: \(\mathit{sum}_{l_i-1}+x_i \le \mathit{sum}_{r_i}\) \(\mathit{sum}_{l+1} +(- 阅读全文
posted @ 2024-03-07 13:28
harmis_yz
阅读(48)
评论(0)
推荐(0)
摘要:
分析 数位 DP 一眼题。 对于一个 \(k\) 位的数 \(s\),我们不妨将其看做由数字 \(s_1,s_2,s_3,\dots,s_k\) 这 \(k\) 个数字拼接起来的。而题意是每个人可以将 \(s_1,s_2,s_3,\dots,s_k\) 中的任意一个减去任意数字,保证不减去 \(0\ 阅读全文
posted @ 2024-03-07 13:23
harmis_yz
阅读(27)
评论(0)
推荐(0)
摘要:
分析 通过题目我们可以发现,题目里唯一难受的限制就是最长增长部分的长度。我们不妨试试将其放进状态函数里。根据 LIS 的性质,若一个长度为 \(3\) 的子序列 \(a_1,a_2,a_3\) 满足 LIS,则必有 \(a_1 <a_2<a_3\)。我们定义 \(\mathit{f}_{i,x,y, 阅读全文
posted @ 2024-03-07 13:23
harmis_yz
阅读(30)
评论(0)
推荐(0)
摘要:
分析 一眼莫队(虽然通过这题的范围显然看出出题人用的不是莫队)。 我们定义 \(\mathit{cnt}_{i}\) 表示数字 \(i\) 出现的次数。在指针的拓展增加 \(x\) 时,若有 \(\mathit{cnt}_{x}+1=1\),则表示在在这个区间里,\(x\) 是第一次出现的,我们可以 阅读全文
posted @ 2024-03-07 13:22
harmis_yz
阅读(17)
评论(0)
推荐(0)
摘要:
感谢 @\(\color{#AEF}{\texttt{Celestial Cyan}}\) 大神对我的骚扰帮助。 分析 一眼 DP。 对于求最大满足条件区间数,我们定义状态函数 \(\mathit{f}_{i}\) 表示在第 \(1\) 到 \(i\) 个区间中选择,且必选第 \(i\) 个区间能够 阅读全文
posted @ 2024-03-07 13:21
harmis_yz
阅读(31)
评论(0)
推荐(0)
摘要:
分析 用势能线段树。 对于一段数字 \(a_l\) 到 \(a_r\),每次全部除以一个大于 \(1\) 的数,不难发现最多除以 \(\log x\) 次就会使 \(a_l\) 到 \(a_r\) 全部变成 \(0\),其中 \(x\) 是区间最大值。 所以,在没有操作 \(2\) 的情况下,我们可 阅读全文
posted @ 2024-03-07 13:20
harmis_yz
阅读(61)
评论(0)
推荐(0)
摘要:
分析 思路不难想,我们对于第 \(i\) 个计划的时间,可以分成 \(l\) 和 \(r+1\) 两部分。用权值线段树维护,在第 \(l\) 天的时候就将该计划的内容加入权值线段树中,直到过了该计划的时间,也就是第 \(r+1\) 天,再将这个计划的内容删除。把每一天需要修改的内容存进 vector 阅读全文
posted @ 2024-03-07 13:19
harmis_yz
阅读(25)
评论(0)
推荐(0)
摘要:
分析 两眼线段树题。 对于从第 \(l\) 列走到第 \(r\) 列,我们的出发、到达情况共有 \(4\) 种,分别是: \(l\) 列第 \(1\) 行到 \(r\) 列第 \(1\) 行。 \(l\) 列第 \(1\) 行到 \(r\) 列第 \(2\) 行。 \(l\) 列第 \(2\) 行到 阅读全文
posted @ 2024-03-07 13:18
harmis_yz
阅读(20)
评论(0)
推荐(0)
摘要:
分析 分块。 我们定义 \(\mathit{cnt}_i\) 表示房子 \(i\) 是否出现过,\(\mathit{sum}_i\) 表示在第 \(i\) 个块内没有被摧毁的房子数量,维护的房子是 \((i-1)\times S-1\) 到 \(i \times S\),其中 \(S=\sqrt{n 阅读全文
posted @ 2024-03-07 13:18
harmis_yz
阅读(42)
评论(0)
推荐(0)
摘要:
分析 对于这道题,首先暴力找出任意两座城市之间的最短路,跑 \(n\) 次 BFS 就行。这里 BFS 的时候可以直接求第 \(i\) 座城市的坐标 \((x_i,y_i)\) 到所有图上坐标的最短路,最后第 \(i\) 座城市到第 \(j\) 组城市的最短路就是 \((x_i,y_i)\) 到 \ 阅读全文
posted @ 2024-03-07 13:16
harmis_yz
阅读(42)
评论(0)
推荐(0)
摘要:
分析 按照 \(k\) 的奇偶分开考虑。 \(k\) 为奇数。一个好的节点有且仅有一个在任意两个有人的节点 \(i,j\) 的路径的交点上的最优位置。若该交点偏移 \(1\) 步,则必然会使路径长度和 \(+1\)。故期望为 \(1\)。 \(k\) 为偶数。任意一个好的节点仍然在任意两个有人的节点 阅读全文
posted @ 2024-03-07 13:15
harmis_yz
阅读(33)
评论(0)
推荐(0)
摘要:
分析 线段树模板题。 维护一个区间 \([l,r]\) 中 \(\sum\limits_{i=l}^r 10^{n-i}\) 的答案。将某个区间 \([l,r]\) 全部修改成 \(x\) 之后的表示的数就是 \(x \times(\sum\limits_{i=l}^r 10^{n-i})\)。区间 阅读全文
posted @ 2024-03-07 13:14
harmis_yz
阅读(24)
评论(0)
推荐(0)
摘要:
分析 线段树模板题。 一眼 DP。定义状态函数 \(\mathit{f}_i\) 表示前 \(i\) 个数中,必选 \(\mathit{A}_i\) 时 \(B\) 的最大长度。则有转移方程:\(\mathit{f}_i=\max\{f_j |((1\le j \le i-1 )\land (-k 阅读全文
posted @ 2024-03-07 13:13
harmis_yz
阅读(24)
评论(0)
推荐(0)
摘要:
分析 乱搞题。 优先考虑 DP。定义状态函数 \(\mathit{f}_i\) 表示在以 \(1\) 为根时,\(i\) 为根的子树中颜色是否相同。如果对于 \(1\) 的每一个儿子 \(j\),都有 \(\mathit{f}_{j}=1\),则输出 \(1\) 就行。 考虑换根的情况。在以 \(i 阅读全文
posted @ 2024-03-07 13:12
harmis_yz
阅读(33)
评论(0)
推荐(0)
摘要:
分析 一眼 DP。 定义状态函数 \(\mathit{f}_{i,j}\) 表示后 \(i\) 位中,删掉或不删掉第 \(i\) 个数时,使后 \(i\) 个数满足条件的最小步数。 如果删掉第 \(i\) 个数,有转移方程:\(\mathit{f}_{i,1}=\min(\mathit{f}_{i+ 阅读全文
posted @ 2024-03-07 13:11
harmis_yz
阅读(63)
评论(0)
推荐(0)
摘要:
分析 因为 \(a\) 是一直没有改变的,移动的只有 \(b\),所以从 \(a\) 的每一位的贡献入手。 对于 \(a\) 中的从低到高第 \(i\) 位,其对应的十进制值是 \(a_{n-i+1}\times 2^{i-1}\)。注意到 \(b\) 是每次右移一位的,所以在 \(b\) 中能与 阅读全文
posted @ 2024-03-07 13:10
harmis_yz
阅读(22)
评论(0)
推荐(0)
摘要:
分析 对于一个从小到大(按编号排序)的长度为 \(n\) 的序列 \(A\),有性质:相邻两个数之差的绝对值为 \(1\) 的数量为 \(n-1\)。 那么,对于这道题,能使环剪开一条边使其按编号排序,必有相邻两个 \(i,j\),满足 \((A_i-A_j=1)\) 的数量为 \(n-1\)。注意 阅读全文
posted @ 2024-03-07 13:09
harmis_yz
阅读(41)
评论(0)
推荐(0)
摘要:
分析 乱搞题。 考虑将区间 \([l,r]\) 中所有人干掉的代价。设 \(cnt_{i}=\max\limits_{j=l}^{r}a_{j,i}\),则代价为:\(\sum\limits_{i=1}^{m}cnt_i\)。很显然,只有在 \(\sum\limits_{i=1}^{m}cnt_i 阅读全文
posted @ 2024-03-07 13:09
harmis_yz
阅读(17)
评论(0)
推荐(0)
摘要:
分析 接着这个说。 现在我们需要优化 \(\mathit{nxt}_{i}\)。重新定义一下,\(\mathit{nxt}_{i,j}\) 表示在后 \(i\) 个数中,\(j\) 第一次出现的位置,且 \([i+1,\mathit{nxt}_{i+1,a_i}-1]\) 是一个合法串。这玩意很像一 阅读全文
posted @ 2024-03-07 13:08
harmis_yz
阅读(22)
评论(0)
推荐(0)
摘要:
分析 没脑子的题目。 一眼换根 DP。定义 \(\mathit{f}_{i}\) 表示 \(i\) 到 \(i\) 为根子树中某一个节点的距离最大值;\(\mathit{g}_{i}\) 表示 \(i\) 经过其父节点到某个节点的距离最大值。那答案就是 \(\max(\mathit{f}_i,\ma 阅读全文
posted @ 2024-03-07 13:07
harmis_yz
阅读(47)
评论(0)
推荐(0)
摘要:
分析 对于异或,有性质 \(a \oplus b = c,a \oplus c =b,a \oplus a =0\)。则对于 \(a_i \oplus a_{i+1}\),其表示的结果就是 \(b_{i} \oplus b_{i+2}\)。做一个前缀异或和,就能够得到 \(b_1\) 与 \(b_2 阅读全文
posted @ 2024-03-07 13:05
harmis_yz
阅读(34)
评论(0)
推荐(0)
摘要:
分析 考虑并查集。 对于 \(a_i,b_i,d_i\),若 \(a_i,b_i\) 在之前的满足要求的操作中,\(a_i,b_i\) 不在同一个集合里,则在之前 \(X_{a_i},X_{b_i}\) 的相对差值是可以任意改变的。令 \(k=X_{a_i}-X_{b_i}\),则我们需要将 \(a 阅读全文
posted @ 2024-03-07 13:04
harmis_yz
阅读(20)
评论(0)
推荐(0)
摘要:
分析 一眼树上启发式合并。 定义 \(x_i\) 为节点 \(i\) 在序列 \(p\) 中的下标。则问题转化为:对于每组 \(l,r,k\),询问以 \(k\) 为根的子树中是否有一个以上的节点,满足 \(l \le x_j \le r\)。 使用 set 存以 \(i\) 为根的子树中 \(x_ 阅读全文
posted @ 2024-03-07 13:02
harmis_yz
阅读(28)
评论(0)
推荐(0)
摘要:
分析 对于区间问题,考虑莫队。 和这个一样转化问题。 把树变成 DFS 序之后,在序列上询问区间就是普通莫队模板了。用 set 记录当前区间里存放的有序 \(x'\)。移动完指针之后的判断是否存在就直接在 set 里二分。复杂度虽然大了不止一点,但是 \(3\) 秒还是能过的。没有压力。 代码 #i 阅读全文
posted @ 2024-03-07 13:01
harmis_yz
阅读(24)
评论(0)
推荐(0)
摘要:
分析 先考虑 \(k=n\) 的情况。 对于 \(s_j=M\) 的时候,其能够匹配的 \(s_i=D\) 的数量很显然是 \(i \le j-1\) 的时候的数量,求前缀和就能得到。而对于 \(s_j=C\) 的时候,能够完整匹配的就是 \(i \le j-1\) 的时候所有 \(s_i=M\) 阅读全文
posted @ 2024-03-07 13:00
harmis_yz
阅读(34)
评论(0)
推荐(0)
摘要:
分析 \(1 \le N \le 17\),一眼状压。 定义 \(f_{s,i}\) 表示从 \(1\) 走到 \(i\),且经过点的状态为 \(s\) 的最小代价。不难推出转移方程:\(f_{s+2^{j-1},j}=\min(f_{s,i}+val_{i,j})\)。其中 \(val_{i,j} 阅读全文
posted @ 2024-03-07 12:59
harmis_yz
阅读(23)
评论(0)
推荐(0)
摘要:
分析 考虑启发式合并。 统计 \(cnt_{i,j}\) 表示在 \(i\) 这个集合中,是 \(j\) 班的人数。\(id_{i}\) 表示 \(i\) 所在集合下标。根据启发式合并模板,在保证是小集合往大集合合并的情况下,将每个小集合元素 \(x\) 所在的班级都在大集合的 \(cnt\) 里增 阅读全文
posted @ 2024-03-07 12:58
harmis_yz
阅读(54)
评论(0)
推荐(0)

浙公网安备 33010602011771号