- 博客(41)
- 收藏
- 关注
原创 思维/技巧 Unjust Binary Life
出发前可以任意翻转 a 和 b 内的元素,定义 f(x,y) 表示走到 (x,y) 这个格子最少需要翻转的次数,给两个 01 串 a 和 b,这两个串定义了一个 n*n 的矩阵,(i,j) 这个位置的值等于。只能走 0 的位置,也就是说这个位置对应的 ai 和 bj 一定要相同。,记 p1 为转化后 a 数组的前缀和,p2 为 b 的,那么。表示区间 a[1,x] 和 b[1,y] 内 0 的个数,Yuri 要从矩阵的 (1,1) 出发,每次只能。(但是c0 c1的定义有区别)最后两部分相减记得除以二。
2025-08-17 14:39:29
564
1
原创 思维/技巧 Gangsta
排序后下标为 i 的数 pi 的贡献就是:被加了 (n-i) 次 ,被减了 i 次。技巧:这种 max 和 min 有关的东西可以把它拆开。表示区间 [x,y] 内 1 的个数,则所求就是。将原本位置上的 0 看成 -1 ,原本的 1 不变。表示区间 [x,y] 内 0 的个数,懒得写了,直接看题面吧,比较短。就等于区间和的绝对值,可以用。处理,设前缀和的数组为 p。这两部分答案可以分开处理。第一部分推一推发现等于。最后两部分相加记得除以二。
2025-08-17 14:05:05
543
原创 启发式合并 + 莫队 恋恋的心跳大冒险
(第一次打的时候不知道如何用 set 维护区间,用数组存区间端点,又加了一个 goodr 表示当前维护的所有右端点,过程相对复杂,容易错,但好在没怎么调试,把两种写法代码都放在下面。MIN 的答案就是区间众数的出现次数(若有多个众数,只算单个众数的出现次数)当我们每加入一个新的点时,合并左右临接的区间,于是我们维护的区间一定是。然后就可以把树上的问题变成普通序列区间上的问题处理了。于是答案就分为两个部分,一个。MAX 的答案就是区间长度。至于第二部分,直接离线询问。
2025-08-16 23:59:23
494
原创 莫队 (维护区间众数的出现次数) Cut and Stick
记录每个数的出现次数 col[i] ,以及一个数组 num[i] 表示 "出现次数为 i 的数的个数",把询问离线就可以用莫队维护区间众数了。需要把这个区间的数划分成若干个子序列(同一个子序列里的数在原序列中不要求连续),使得对于每个子序列,假设长度为 len ,则序列中。先考虑整个区间的众数出现次数 f ,如果 f <= (len + 1) / 2,则无需划分,答案为 1。于是第二种情况的答案就可以表示为:f - (len - f + 1) + 1 = 2 * f - len。
2025-08-16 01:27:19
243
原创 树上启发式合并/莫队 Tree and Queries
一棵树上 (n <= 1e5) 每个点都有一个颜色 (ci <= 1e5) ,m (m <= 1e5) 次询问,每次询问包含一个 v 和一个 k ,统计。树上启发式合并,记录每个颜色出现的次数 col[i],以及一个数组。(注意我们可以在更新 col 的同时 O(1) 更新 num)利用 "子树内节点的 dfn 是一段连续区间" ,可以。将统计子树内的答案转化成统计区间内的答案。
2025-08-16 01:04:19
365
原创 莫队 + 离散化 Ann and Books
q (q <= 1e5) 次查询,每次查询一段区间 [l,r] ,求 [l,r] 内所有满足 " 数学书的题目数量之和 - 经济书的题目数量之和 = k " (每个询问的 k 都是同一个固定值)的。即:pre[x] - pre[i-1] == k -> pre[i-1] == pre[x] - k ( i-1。即:pre[i] - pre[x-1] == k -> pre[i] == pre[x-1] + k ( i。无修改,区间查询,k 值固定,可以离线,又想到莫队了。" 的子区间的数目。
2025-08-14 17:16:48
1205
原创 莫队 Little Elephant and Array
给一个长度为 n (n <= 1e5) 的数组 (ai <= 1e9),m (m <= 1e5) 次询问,每次查询一个区间 [l,r] ,求区间内有多少个数 x ,满足 x 在这个区间的出现次数也刚好等于 x。我们要维护每个数出现的次数,但是 ai <= 1e9 太大了,无法维护所有的数。注意到答案可以离线,考虑莫队,可以算是模板题了。ai > n 的数其实是不需要维护的。,因为他们永远不可能出现那么多次嘛。
2025-08-14 16:47:02
336
原创 根号分治 Remainder Problem
于是我们可以暴力求解这部分 x 比较大的答案,假设这个临界是 x > A,单次查询时间复杂度为。表示模 i 余 j 的位置上的所有数之和,因为是单点修改,维护 f 的复杂度为。有一个长度 5e5 的数组,初始所有元素都是 0。当 x 比较小的时候(临界是 x <= A),设。我们想要这两部分的复杂度相同,则 A 应该取。于是这道题变成了一个根号算法,总复杂度为。
2025-08-14 16:37:16
373
原创 分块 GukiZ and GukiZiana
每次修改非整块之后重新排序(整块无需重复排序,因为整块内部所有值在本次操作中都同时增加一个相同的值,相对顺序不变),排序是为了。如果对每个块都开一个 map 记录,多带一个 log 可能会超时,而且空间上也不优秀,于是考虑直接。(其中一大细节就是:因为我们对每个块排序了,而修改的时候是按原数列的顺序进行修改的,因此我们。嗯没错,某些分块的题就是如此暴力,注意块的临界范围等代码细节......注意到 q 的范围较小,并且有区间操作,答案还可以离线做,于是分块。操作类型 2. 查询使得。
2025-08-14 00:25:31
331
原创 树形DP Maximum White Subtree
设 f[i] 表示以 i 为根的子树内答案的最大值,先进行一次 dfs 把以 1 为根的答案计算出来,然后考虑其他节点为根的情况。假设当前节点为 x ,从 x 过渡到计算 x 的子节点 rec 的真实答案,也就是。一棵树,每个节点被染成黑或白色,对每个节点 v ,求。于是可以递归一边换根一边计算答案,记得回溯就行了。的连通图里,白色节点数减去黑色节点数的最大值。白点权值标为 1 ,黑点标为 -1。f[rec] += (新的)f[x];
2025-08-11 00:43:57
306
原创 树上启发式合并 Blood Cousins
对每个 vi ,肯定要先求出它的 pi-th ancestor,倍增即可。(其实这里不是LCA,只是ancestor,但是本人代码里顺手就这么打了)m 次询问,要求计算节点 vi 的 pi-th cousins 的数目。计算节点 vi 的 pi-th cousins 的数目,其实。维护一个 num[i] 表示子树中深度为 i 的节点个数((减 1 代表除去 vi 这个节点本身)。可以先记录 m 个答案,再离线处理。
2025-08-11 00:31:41
469
原创 树上启发式合并 Ancient Tree
整个子树的待定颜色都可以变成子树内任意一个已知的颜色,如果没有已知颜色(全部都待定),那么整个子树都延迟染色,让祖先来决定他们的颜色。如果当前节点无颜色,贪心地令它颜色为这个配对的颜色一定是最优的,并且我们可以把整个子树的待定颜色都变成这个颜色。1. 若已配对的个数 >= 2:那无论当前节点是什么颜色,它都是 cute。如果当前节点有颜色且和配对的颜色不同,那么它也是 cute。维护子树内的颜色集合,和孩子之间已经 "配对" 的颜色个数。
2025-08-10 01:02:17
486
原创 概率/期望 DP Jeff and Furik
假设初始的逆序对数目为 num ,那么每一次 J 的贡献就是把这个 num -1,F 则有可能 +1 也有可能 -1。有一个 n 的排列数组 p ,J 和 F 轮流(J 先)调整数组 p 中相邻两个数的前后顺序,J 要尽力使数组 p 变成从小到大的有序数组,而 F 则有 0.5 的概率随机调换一组相邻的。还需注意的是,若 num 为奇数,则最后一次只需 J 出手就可以直接结束游戏。,而 F 则有 50% 的概率帮忙也有 50% 的概率捣乱。,亦有 0.5 的概率随机调换一组相邻的。
2025-08-06 21:19:16
310
原创 概率/期望 DP Jon and Orbs
需要收集 k (k <= 1000)个球,初始一个球都没有,每次有等同概率得到任意一个球,求要想收集完全整套魔法球(每种至少一个)的概率至少是。可以直接预处理出 f(1~10000,j) 的所有值,然后二分答案即可。询问若干个 pi ,对于每个 pi 输出对应的答案。为拿了 i 次之后收集了 j 种球的概率。
2025-08-06 21:02:51
252
原创 概率/期望 DP Bag of mice
袋子里有 w 只白鼠和 b 只黑鼠,princess 和 dragon 轮流随机取出一只,princess 先取,特别的是每次dragon 取完会有随机一只老鼠从袋子里跳出,谁先取出白鼠谁赢,若袋子空了还没分出胜负,则 dragon 获胜。状态转移:(设 all = w + b - 3i ,bl = all - j)那么 i 轮之后会剩下 (w + b - 3i) 只老鼠,于是。官方的解法其实本质上没有区别,只是换了一种实现方式。表示剩下 i 只白鼠 j 只黑鼠。自己琢磨了一种解法,写在前面。
2025-08-06 20:50:33
328
原创 概率/期望 DP Let‘s Play Osu!
其实 P(i,j) 代表的就是第 i 个为 "O" 和第 j 个为 "O" 的组合贡献,它并不包含譬如 P(i+1,j)、P(i,j + 1) ... 的贡献。也就是说,我们在已经有一段长度为 x 的连续 "O" 序列的情况下,再加多一个 "O" ,得到的贡献就会加上 "2x+1"。第二部分的答案,我们要计算的就是 [i,j] 这段序列出现全 "O" 的概率,记作 P(i,j) ,有一个长度为 n 的序列,第 i 个位置上为 "O" 的概率为。,为 "X" 的概率为。求整个序列的期望得分。
2025-08-06 19:02:21
404
原创 概率/期望 DP llya and Escalator
只有从状态 (i,j) 转移到 (i + 1,j + 1) 的边的边权为1,从状态 (i,j) 转移到 (i + 1,j) 的边的边权设置为 0 ,那么这里边权的意义就是此次转移增加了电梯上的几个人(1或0)。于是问题转化成了。
2025-08-06 18:06:53
917
原创 Educational Codeforces Round 169 (Rated for Div. 2)
Educational Codeforces Round 169 (Rated for Div. 2)
2024-08-23 23:26:17
1406
原创 EPIC Institute of Technology Round August 2024 (Div. 1 + Div. 2)
EPIC Institute of Technology Round August 2024 (Div. 1 + Div. 2)
2024-08-18 03:43:14
1825
2
原创 Codeforces Round 959 sponsored by NEAR (Div. 1 + Div. 2)
Codeforces Round 959 sponsored by NEAR (Div. 1 + Div. 2)
2024-08-01 17:42:06
825
原创 Codeforces Round #956 (Div. 2) and ByteRace 2024
Codeforces Round #956 (Div. 2) and ByteRace 2024
2024-07-15 17:55:50
1466
原创 EPIC Institute of Technology Round Summer 2024 (Div. 1 + Div. 2)
EPIC Institute of Technology Round Summer 2024 (Div. 1 + Div. 2)
2024-07-03 15:32:04
1707
原创 CR 951 (Div. 2)
Codeforces Round 951 (Div. 2)A. Guess the MaximumB. XOR SequencesC. Earning on BetsD. Fixing a Binary StringE. Manhattan TriangleF. Kostyanych's Theorem
2024-06-12 22:20:02
1474
原创 CR 950 (Div. 3)
Codeforces Round 950 (Div. 3)A. Problem GeneratorB. Choosing CubesC. Sofia and the Lost OperationsD. GCD-sequenceE. Permutation of Rows and ColumnsF1. Field Division (easy version)F2. Field Division (hard version)G. Yasya and the Mysterious Tree
2024-06-05 22:52:26
1181
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅