03 2024 档案

摘要:分析 考虑时光倒流。 对于需要合并的两个连通块 x,y,其合并之后的最远点对距离一定是合并之前的两组点对中产生的。在合并的时候枚举点对,取距离最大值即可。由于我们是倒着来的,所有连通块的最远点对距离最大值不减,所以能直接在合并之后取最大值。 维护连通块用并查集即可。复杂度 \(O(n\log 阅读全文
posted @ 2024-03-09 22:14 harmis_yz 阅读(36) 评论(0) 推荐(1) 编辑
摘要:分析 一眼了非最优解。 考虑二分答案。对于二分出来的中位数 x,到 aiaj 里边又去二分。得到两个序列中不超过 x 的数的数量。若这个数量 cntleni+lenj2,则 \(x\ 阅读全文
posted @ 2024-03-09 22:10 harmis_yz 阅读(36) 评论(0) 推荐(1) 编辑
摘要:分析 推式子题。 ans=i=1nj=1mτ(i)τ(j)τ(gcd(i,j))对于 (i,j),若 k(i,j) 的因子,则 k 一定整除 i,j,所以有 阅读全文
posted @ 2024-03-08 18:45 harmis_yz 阅读(13) 评论(0) 推荐(1) 编辑
摘要:分析 考虑 DP。 定义状态函数 fi 表示处理完前 i 个字符且第 i 个字符为 1 时的最小代价。则对于 i,有两种情况: i 不是第一个 1,则上一个 1 的位置必定为 iki 是第一个 1,没有上 阅读全文
posted @ 2024-03-07 14:31 harmis_yz 阅读(6) 评论(0) 推荐(1) 编辑
摘要:分析 考虑莫队。 令 S=lcm(al,al+1,al+2,,ar1)。则对于新加进来的 ar,有: \[\begin{aligned} & \ \ \ \ \ \operatorname{lcm}(a_l,a_{l+1 阅读全文
posted @ 2024-03-07 13:43 harmis_yz 阅读(28) 评论(1) 推荐(1) 编辑
摘要:分析 考虑二分答案。 对于当前二分的答案 x,设 cnt 表示 Farey 序列中 pqx 的满足条件的数量。对于一组 (i,j),若 jix,则 \(j \le\lfloor i \times x \rf 阅读全文
posted @ 2024-03-07 13:43 harmis_yz 阅读(9) 评论(0) 推荐(0) 编辑
摘要:分析 考虑线段树。 20 分 统计节点懒标记,在每次询问之前统一下传 (lst,i1) 的修改懒标记,lst 是上一次询问的位置。 40 分 在统一下传的过程中打标记,如果当前节点的某个儿子所在子树中没有需要下传懒标记的节点,则不更新那个儿子的内容。 70 阅读全文
posted @ 2024-03-07 13:42 harmis_yz 阅读(12) 评论(0) 推荐(0) 编辑
摘要:分析 考虑莫队。 对于 ai=k(lir) 的下标集合 Sk,当其加入一个新的下标 x 时,这个新下标对答案的贡献分两种情况。 第一种,x 最小。相邻从下标的间隔中产生的贡献是 \(\sum (|S_k|-i+1)\times(ans_{S_{ 阅读全文
posted @ 2024-03-07 13:42 harmis_yz 阅读(4) 评论(0) 推荐(0) 编辑
摘要:分析 弱智题。 和这题很像。 想到 DP。定义状态函数 fi,j 表示区间 [i,j] 中的答案。这玩意直接暴力 O(n3) 算区间 DP,能有 35 分。 考虑优化,如果定义 fi,j=0/1 表示子串 \( 阅读全文
posted @ 2024-03-07 13:42 harmis_yz 阅读(91) 评论(0) 推荐(0) 编辑
摘要:分析 水题,评分能有 2100 可能是因为很多人卡 E 了。 我说真的,E 好难啊。 n 只有 20,考虑从状压的角度入手。定义状态函数 fs,i 表示当某个字符串 T 包含了所有 s 的二进制中为 1 的下标 Sj 且 \(T 阅读全文
posted @ 2024-03-07 13:42 harmis_yz 阅读(10) 评论(0) 推荐(0) 编辑
摘要:分析 出得很好,模板套模板,希望下次再来。 难点在于维护最后连续喝的 DS 饮料数量。设这次喝原味饮料的区间为 [l,r],上一次为 [l,r]。则有两种情况: [l,r][l,r] 不相交。如: 在 [l,r][l,r] 两个 阅读全文
posted @ 2024-03-07 13:42 harmis_yz 阅读(10) 评论(0) 推荐(0) 编辑
摘要:分析 考虑乱搞。 对于求次大值,用线段树维护就行了。记录下每个区间的最大、次大值。则两个子区间的父区间的最大值就是这四个最大的,次大值就是这四个次大的。复杂度 O(logn)。 求次大值的出现次数,乱搞就行了。因为带修,带修莫队或者分块有些麻烦。其实用线段树就行。在维护区间最大、次大值的 阅读全文
posted @ 2024-03-07 13:41 harmis_yz 阅读(12) 评论(0) 推荐(0) 编辑
摘要:分析 考虑暴力 DP。 定义状态函数 fi,j,k1,k2 表示前 i+j 个人中,有 i 个步兵和 j 个骑兵且末尾连续步兵数量为 k1,连续骑兵数量为 k2 的方案数。 由于末尾连续的要么是步兵要么是骑兵,所以状态中 k1,k2 只会 阅读全文
posted @ 2024-03-07 13:41 harmis_yz 阅读(20) 评论(0) 推荐(0) 编辑
摘要:分析 考虑 DP。 因为 n3000,我们可以直接枚举插针的位置。定义状态函数 fi 表示在从左往右第 i 个小球的位置上插针的最小花费。 枚举该小球右边第一个插针的位置,则 ij1 的小球都会滚到小球 i 的位置。代价为 \(\s 阅读全文
posted @ 2024-03-07 13:41 harmis_yz 阅读(14) 评论(0) 推荐(0) 编辑
摘要:分析 考虑 DP。 定义状态函数 fi,j 表示在 s[1i] 中选一个子串 a,在 t[1j] 中选一个子序列 b,且 si,tj 必选时 a=b 的方案数。则有两种情况: sitj阅读全文
posted @ 2024-03-07 13:40 harmis_yz 阅读(8) 评论(0) 推荐(0) 编辑
摘要:分析 分类讨论。 对 |pipj|+|ij| 分类讨论,有: (pi+i)(pj+j)pi>pji>j(pii)+(pjj)pi<pji>j(pii)(pjj),\(p_ 阅读全文
posted @ 2024-03-07 13:39 harmis_yz 阅读(8) 评论(0) 推荐(0) 编辑
摘要:分析 考虑状压。 定义状态函数 fi,j 表示在经过点的情况为 i 且最后停在点 j 的最小花费。那有:fi,j=min{fi,k+wkj|kj}。然后就过不了样例一。根据样例一,可以发现 \(f_{3,2}=f_{2 阅读全文
posted @ 2024-03-07 13:39 harmis_yz 阅读(7) 评论(0) 推荐(0) 编辑
摘要:分析 考虑 DP。 先考虑 A 的答案。定义状态函数 fi,j 表示在子串 S1i 中选 j 个,且第 Si 必选的方案数。则有:fi,j=Ci1j1。 再考虑 B 的答案。枚举每一个位置 \( 阅读全文
posted @ 2024-03-07 13:38 harmis_yz 阅读(14) 评论(0) 推荐(0) 编辑
摘要:分析 参照去年普及组 T4,很显然能发现就是一个暴力最短路。设 disi,j 表示从 1 走到 i 且能得到的 s 最小为 j 时的最短路。那么答案就是 min{disn,i|1iV}。 考虑最短路转移。对于当前的 阅读全文
posted @ 2024-03-07 13:38 harmis_yz 阅读(8) 评论(0) 推荐(0) 编辑
摘要:分析 考虑区间 DP。 定义状态函数 fl,r,1/0 表示在 Pl,Pl+1,,Pr 这些点中,Pl 是或不是唯一(子)树根时的答案。 对于 fl,r,1Pl 的第一个儿子一定是 \( 阅读全文
posted @ 2024-03-07 13:37 harmis_yz 阅读(5) 评论(0) 推荐(0) 编辑
摘要:分析 和 T5 差不多的思路。把所有的绿色格子看做图上的点,对于将每个绿色格子变成红色时连通块增加的数量,实际上就是无向图中删掉某个点连通分量变化量的问题。 对于删掉某个点后连通分量变化量,有三种情况: 节点是孤点,删掉后连通分量增加 1。 节点是割点,删掉后连通分量增加其所在点双数量 \ 阅读全文
posted @ 2024-03-07 13:37 harmis_yz 阅读(2) 评论(0) 推荐(0) 编辑
摘要:分析 乱搞题。 右移若干次很显然可以破环成链,然后 l,r 指针在这个长度为 2n 的序列上右移。每种状态的答案就是 [l,r] 的答案。 考虑相邻两种状态的变化量。设上一次 l 指向的值为 pl,则到当前状态的变化量就是:\(-\operatorn 阅读全文
posted @ 2024-03-07 13:36 harmis_yz 阅读(15) 评论(0) 推荐(0) 编辑
摘要:分析 一道差分约束题。 我们令 sumi 表示 1i 中,1 的数量,根据题意可得: sumli1+xisumri \(\mathit{sum}_{l+1} +(- 阅读全文
posted @ 2024-03-07 13:28 harmis_yz 阅读(10) 评论(0) 推荐(0) 编辑
摘要:分析 数位 DP 一眼题。 对于一个 k 位的数 s,我们不妨将其看做由数字 s1,s2,s3,,skk 个数字拼接起来的。而题意是每个人可以将 s1,s2,s3,,sk 中的任意一个减去任意数字,保证不减去 \(0\ 阅读全文
posted @ 2024-03-07 13:23 harmis_yz 阅读(4) 评论(0) 推荐(0) 编辑
摘要:分析 通过题目我们可以发现,题目里唯一难受的限制就是最长增长部分的长度。我们不妨试试将其放进状态函数里。根据 LIS 的性质,若一个长度为 3 的子序列 a1,a2,a3 满足 LIS,则必有 a1<a2<a3。我们定义 \(\mathit{f}_{i,x,y, 阅读全文
posted @ 2024-03-07 13:23 harmis_yz 阅读(10) 评论(0) 推荐(0) 编辑
摘要:分析 一眼莫队(虽然通过这题的范围显然看出出题人用的不是莫队)。 我们定义 cnti 表示数字 i 出现的次数。在指针的拓展增加 x 时,若有 cntx+1=1,则表示在在这个区间里,x 是第一次出现的,我们可以 阅读全文
posted @ 2024-03-07 13:22 harmis_yz 阅读(5) 评论(0) 推荐(0) 编辑
摘要:感谢 @Celestial Cyan 大神对我的骚扰帮助。 分析 一眼 DP。 对于求最大满足条件区间数,我们定义状态函数 fi 表示在第 1i 个区间中选择,且必选第 i 个区间能够 阅读全文
posted @ 2024-03-07 13:21 harmis_yz 阅读(10) 评论(0) 推荐(0) 编辑
摘要:分析 用势能线段树。 对于一段数字 alar,每次全部除以一个大于 1 的数,不难发现最多除以 logx 次就会使 alar 全部变成 0,其中 x 是区间最大值。 所以,在没有操作 2 的情况下,我们可 阅读全文
posted @ 2024-03-07 13:20 harmis_yz 阅读(6) 评论(0) 推荐(0) 编辑
摘要:分析 思路不难想,我们对于第 i 个计划的时间,可以分成 lr+1 两部分。用权值线段树维护,在第 l 天的时候就将该计划的内容加入权值线段树中,直到过了该计划的时间,也就是第 r+1 天,再将这个计划的内容删除。把每一天需要修改的内容存进 vector 阅读全文
posted @ 2024-03-07 13:19 harmis_yz 阅读(8) 评论(0) 推荐(0) 编辑
摘要:分析 两眼线段树题。 对于从第 l 列走到第 r 列,我们的出发、到达情况共有 4 种,分别是: l 列第 1 行到 r 列第 1 行。 l 列第 1 行到 r 列第 2 行。 l 列第 2 行到 阅读全文
posted @ 2024-03-07 13:18 harmis_yz 阅读(4) 评论(0) 推荐(0) 编辑
摘要:分析 分块。 我们定义 cnti 表示房子 i 是否出现过,sumi 表示在第 i 个块内没有被摧毁的房子数量,维护的房子是 (i1)×S1i×S,其中 \(S=\sqrt{n 阅读全文
posted @ 2024-03-07 13:18 harmis_yz 阅读(11) 评论(0) 推荐(0) 编辑
摘要:分析 对于这道题,首先暴力找出任意两座城市之间的最短路,跑 n 次 BFS 就行。这里 BFS 的时候可以直接求第 i 座城市的坐标 (xi,yi) 到所有图上坐标的最短路,最后第 i 座城市到第 j 组城市的最短路就是 (xi,yi) 到 \ 阅读全文
posted @ 2024-03-07 13:16 harmis_yz 阅读(18) 评论(0) 推荐(0) 编辑
摘要:分析 按照 k 的奇偶分开考虑。 k 为奇数。一个好的节点有且仅有一个在任意两个有人的节点 i,j 的路径的交点上的最优位置。若该交点偏移 1 步,则必然会使路径长度和 +1。故期望为 1k 为偶数。任意一个好的节点仍然在任意两个有人的节点 阅读全文
posted @ 2024-03-07 13:15 harmis_yz 阅读(6) 评论(0) 推荐(0) 编辑
摘要:分析 线段树模板题。 维护一个区间 [l,r]i=lr10ni 的答案。将某个区间 [l,r] 全部修改成 x 之后的表示的数就是 x×(i=lr10ni)。区间 阅读全文
posted @ 2024-03-07 13:14 harmis_yz 阅读(10) 评论(0) 推荐(0) 编辑
摘要:分析 线段树模板题。 一眼 DP。定义状态函数 fi 表示前 i 个数中,必选 AiB 的最大长度。则有转移方程:\(\mathit{f}_i=\max\{f_j |((1\le j \le i-1 )\land (-k 阅读全文
posted @ 2024-03-07 13:13 harmis_yz 阅读(7) 评论(0) 推荐(0) 编辑
摘要:分析 乱搞题。 优先考虑 DP。定义状态函数 fi 表示在以 1 为根时,i 为根的子树中颜色是否相同。如果对于 1 的每一个儿子 j,都有 fj=1,则输出 1 就行。 考虑换根的情况。在以 \(i 阅读全文
posted @ 2024-03-07 13:12 harmis_yz 阅读(17) 评论(0) 推荐(0) 编辑
摘要:分析 一眼 DP。 定义状态函数 fi,j 表示后 i 位中,删掉或不删掉第 i 个数时,使后 i 个数满足条件的最小步数。 如果删掉第 i 个数,有转移方程:\(\mathit{f}_{i,1}=\min(\mathit{f}_{i+ 阅读全文
posted @ 2024-03-07 13:11 harmis_yz 阅读(23) 评论(0) 推荐(0) 编辑
摘要:分析 因为 a 是一直没有改变的,移动的只有 b,所以从 a 的每一位的贡献入手。 对于 a 中的从低到高第 i 位,其对应的十进制值是 ani+1×2i1。注意到 b 是每次右移一位的,所以在 b 中能与 阅读全文
posted @ 2024-03-07 13:10 harmis_yz 阅读(6) 评论(0) 推荐(0) 编辑
摘要:分析 对于一个从小到大(按编号排序)的长度为 n 的序列 A,有性质:相邻两个数之差的绝对值为 1 的数量为 n1。 那么,对于这道题,能使环剪开一条边使其按编号排序,必有相邻两个 i,j,满足 (AiAj=1) 的数量为 n1。注意 阅读全文
posted @ 2024-03-07 13:09 harmis_yz 阅读(5) 评论(0) 推荐(0) 编辑
摘要:分析 乱搞题。 考虑将区间 [l,r] 中所有人干掉的代价。设 cnti=maxj=lraj,i,则代价为:i=1mcnti。很显然,只有在 \(\sum\limits_{i=1}^{m}cnt_i 阅读全文
posted @ 2024-03-07 13:09 harmis_yz 阅读(5) 评论(0) 推荐(0) 编辑
摘要:分析 接着这个说。 现在我们需要优化 nxti。重新定义一下,nxti,j 表示在后 i 个数中,j 第一次出现的位置,且 [i+1,nxti+1,ai1] 是一个合法串。这玩意很像一 阅读全文
posted @ 2024-03-07 13:08 harmis_yz 阅读(7) 评论(0) 推荐(0) 编辑
摘要:分析 没脑子的题目。 一眼换根 DP。定义 fi 表示 ii 为根子树中某一个节点的距离最大值;gi 表示 i 经过其父节点到某个节点的距离最大值。那答案就是 \(\max(\mathit{f}_i,\ma 阅读全文
posted @ 2024-03-07 13:07 harmis_yz 阅读(7) 评论(0) 推荐(0) 编辑
摘要:分析 对于异或,有性质 ab=c,ac=b,aa=0。则对于 aiai+1,其表示的结果就是 bibi+2。做一个前缀异或和,就能够得到 b1 与 \(b_2 阅读全文
posted @ 2024-03-07 13:05 harmis_yz 阅读(11) 评论(0) 推荐(0) 编辑
摘要:分析 考虑并查集。 对于 ai,bi,di,若 ai,bi 在之前的满足要求的操作中,ai,bi 不在同一个集合里,则在之前 Xai,Xbi 的相对差值是可以任意改变的。令 k=XaiXbi,则我们需要将 \(a 阅读全文
posted @ 2024-03-07 13:04 harmis_yz 阅读(8) 评论(0) 推荐(0) 编辑
摘要:分析 一眼树上启发式合并。 定义 xi 为节点 i 在序列 p 中的下标。则问题转化为:对于每组 l,r,k,询问以 k 为根的子树中是否有一个以上的节点,满足 lxjr。 使用 set 存以 i 为根的子树中 \(x_ 阅读全文
posted @ 2024-03-07 13:02 harmis_yz 阅读(5) 评论(0) 推荐(0) 编辑
摘要:分析 对于区间问题,考虑莫队。 和这个一样转化问题。 把树变成 DFS 序之后,在序列上询问区间就是普通莫队模板了。用 set 记录当前区间里存放的有序 x。移动完指针之后的判断是否存在就直接在 set 里二分。复杂度虽然大了不止一点,但是 3 秒还是能过的。没有压力。 代码 #i 阅读全文
posted @ 2024-03-07 13:01 harmis_yz 阅读(2) 评论(0) 推荐(0) 编辑
摘要:分析 先考虑 k=n 的情况。 对于 sj=M 的时候,其能够匹配的 si=D 的数量很显然是 ij1 的时候的数量,求前缀和就能得到。而对于 sj=C 的时候,能够完整匹配的就是 ij1 的时候所有 si=M 阅读全文
posted @ 2024-03-07 13:00 harmis_yz 阅读(8) 评论(0) 推荐(0) 编辑
摘要:分析 1N17,一眼状压。 定义 fs,i 表示从 1 走到 i,且经过点的状态为 s 的最小代价。不难推出转移方程:fs+2j1,j=min(fs,i+vali,j)。其中 \(val_{i,j} 阅读全文
posted @ 2024-03-07 12:59 harmis_yz 阅读(7) 评论(0) 推荐(0) 编辑
摘要:分析 考虑启发式合并。 统计 cnti,j 表示在 i 这个集合中,是 j 班的人数。idi 表示 i 所在集合下标。根据启发式合并模板,在保证是小集合往大集合合并的情况下,将每个小集合元素 x 所在的班级都在大集合的 cnt 里增 阅读全文
posted @ 2024-03-07 12:58 harmis_yz 阅读(13) 评论(0) 推荐(0) 编辑
摘要:分析 考虑枚举。 注意到第二个条件是必须要有 25 个字符在里面出现过,故考虑枚举唯一没出现过的字符 k,然后再枚举 si。 令 cnti,j 表示 si 中字符 c 出现的奇偶性。如果有字符 ckcnti,c=0,则在 sj 阅读全文
posted @ 2024-03-05 19:04 harmis_yz 阅读(8) 评论(0) 推荐(0) 编辑
摘要:分析 考虑状压。 定义状态函数 fi,j 表示在得到 C 出现过的状态为 i 且排列末尾为 j 时的最小代价。则有转移方程:fi,j=min{fi,k+disk,j},保证 i 表示集合属于 i。\(dis_{ 阅读全文
posted @ 2024-03-05 19:04 harmis_yz 阅读(15) 评论(0) 推荐(0) 编辑
摘要:比 E 简单。 分析 考虑暴力 DP。 定义状态函数 fi 表示最后一个黑点为 i 时的方案数,有:fi=j=1i1fj[(ij)modvalj=0]。不难发现在使用刷表法的时候,转移代码: for(re int j=1;i+val 阅读全文
posted @ 2024-03-05 19:03 harmis_yz 阅读(6) 评论(0) 推荐(0) 编辑
摘要:分析 一眼分块。 用值域分块来维护。先把所有的值离散化,使得至于不大于 n+q。统计一下每个值的数量,每个块包含值的数量,每个块的价值和。修改值的时候先把原来值的数量,块包含的数量,块的价值剪掉被修改值的贡献,然后在新的值上面更新。修改数量直接改数量的变化贡献即可。 找前 x 大的值之和从值 阅读全文
posted @ 2024-03-05 19:01 harmis_yz 阅读(10) 评论(0) 推荐(0) 编辑
摘要:分析 乱搞题。 1n,m105 的时候就可以考虑乱搞了。 发现每次操作 1 都会把上一次的操作 1 覆盖掉,那么第 i 个询问时树的颜色情况就是由前 1 个操作 1 决定。也就是说这个询问的内容变成了:在 x 为根的子树中,深度不小于 x 的节 阅读全文
posted @ 2024-03-05 19:01 harmis_yz 阅读(93) 评论(0) 推荐(0) 编辑
摘要:分析 线段树。 每个节点维护两个值:s[lr]s[rl]。判断字串是否是回文直接就是询问的答案维护出来的两个值是否相同。 首先想到用线段树暴力维护。第一个值很显然是两个儿子的第一个值加起来,第二个值是反着加起来。得到很酷的代码: il void up(int 阅读全文
posted @ 2024-03-05 18:57 harmis_yz 阅读(14) 评论(0) 推荐(0) 编辑
摘要:分析 一眼 DP。 定义状态函数 fi,j 表示在第 i 此比赛中,获胜者为 j 时的最大奖学金。把比赛过程看成一棵倒着的满二叉树,就能发现:第 i 场比赛只会是其左儿子为根的子树中叶子节点的某一个与其右儿子为根的子树中叶子节点的某一个进行比赛。然后就可以得到转移方程:$f_{ 阅读全文
posted @ 2024-03-05 18:57 harmis_yz 阅读(7) 评论(0) 推荐(0) 编辑
摘要:分析 考虑 DP。 由于 n 很大,而 m 可以接受,考虑根据公交车定义状态函数。很容易想到一种状态函数:fi 表示做第 i 辆公交车到 ti 的方案数。根据题意,就有转移方程:fi=fj[sitjti1]+kk 在 $s 阅读全文
posted @ 2024-03-05 18:54 harmis_yz 阅读(5) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示