自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(185)
  • 收藏
  • 关注

原创 算法典题 ---- 持续更新中

目录字符串哈希:单调队列优化dp: 线段树(单点更新、区间查询最大最小值): 线段树(查询区间最大子线段和变形):01字典树: C-智乃的前缀、后缀、回文_牛客寒假算法基础集训营3 (AtCoder Beginner Contest 331)F - Palindrome Query F - Product Equality (atcoder.jp) D. Blocking Elements Codeforces Round 922 (Div.

2024-02-08 12:52:48 495

原创 Educational Codeforces Round 152 (Rated for Div. 2) ----- E - Max to the Right of Min ----- 题解

直到a[r'] > a[i] 时,停止计算答案。例如我们是否能构造这样的情况 [l, .... i, .... r] 在这个数组中ai的值最大,a[r] > a[l], 并且 l+1 ---- r-1这些索引的值都大于a[r],那么现在的最小值索引为l, 如果往后考虑 只要不出现一个索引 x,满足(x<l, 并且a[x] > a[i]) 那么这样的子数组都是合法的,换言之 l最多扩展到x,那我们只要预处理得到左边数字中第一个大于ai的索引值,那我们就可以快速得到以r为右端点的所有答案,

2024-05-02 17:33:34 639

原创 Codeforces Round 942 (Div. 2) ----- A ----- F --- 题解

前情提要:因为数学水平原因,没法给出e的证明,因为我也是举例归类得出的结论,但是按理来说应该可以利用生成数函数证明f题也是因为数学原因加上水平有限,我的理解可能有偏差。

2024-05-01 22:03:37 1104 1

原创 Codeforces Round 941 (Div. 2) ------ A ---- F (题解)

前情提要:这场全是思维题,一点算法没有,所以脑子好就能上分。但是个人认为这种场没有啥意义,所以t宝不会出题,下次别出了。(狗头保命)

2024-04-28 17:52:24 746 2

原创 Educational Codeforces Round 164 (Rated for Div. 2) ----- F. Unique Strings ----- 题解

那么我们再考虑,我们对于染色方案有其他要求需要满足,置换可以看作是几个循环,那么我们就可以将染色方案在置换作用下不变,看作是他在分为g组的情况下,组内的元数相等(这样的循环就一定相等),那么我们就可以利用g个前缀字符唯一定义一个字符串,那么每个字符会复制 n/g次后变为原字符串,那么这g个前缀中最多拥有 a = (k+c) / (n/g) 个1,那么等价于至少拥有 b = g - a个0,并且需要满足前缀中还是要包含连续的c个1,但是正面并不好求,那么我们利用容斥原理来求得。

2024-04-23 12:42:07 737

原创 AtCoder Beginner Contest 350 ---- G - Mediator ---- 题解

查询一是连接两个点,但是题目保证添加边时两个结点属于两个不同的联通块,那么可以直接相连即可。但是相连时,需要重新编写父子关系,那么就需要遍历某一个联通部分,所以在这里我们应该采用小联通块连接到大联通块的策略,那么这里需用并查集的思想。查询二是两个点x和y,问连接x和y的点是谁,因为他是一个森林,所以这个点是唯一确定的,利用父子关系查即可,因为x和y只有两种情况,爷孙关系或者兄弟关系。

2024-04-21 20:49:17 258

原创 牛客小白月赛91 ----- Bingbong的回文路径 ---- 题解

但是怎么快速查询这个路径上字符串的hash值变成为了关键,可以发现,根节点到到任意结点的路径是确定的,并且是可以在一次dfs遍历中维护出来根据点到任意结点的字符串路径hash值的,那我们检查这个值有什么用。现在有一棵树,树上每个结点上都有一个小写字母,那么如果唯一确定了x和y两个结点,那么就唯一确定了一个字符串路径(最短路径)。假设我们查询红色结点到蓝色结点,那么可以发现,我们只需要找到他们最小公共祖先就可以利用他们三个结点的hash值来维护任意结点之间的hash值了。那么这道题就可以做了。

2024-04-21 16:29:22 258

原创 AtCoder Beginner Contest 350 ----- F - Transpose ---- 题解

但是因为Java字符串处理实在太慢,on也被卡掉,所以推荐使用cpp处理字符问题。所以我们预处理括号对后,我们顺序遍历这个字符串,如果碰到第一个括号对,那我们倒序遍历这个字符串,然后再次碰到下一个括号对后,那么再顺序遍历这个括号对的字符串。例如 A(x(AXB)x)B 我们可以发现 x(AXB)x 需要翻转一次并改变大小写,然后(AXB)翻转一次并改变大小写,那么相当于AXB不做变化。如果有一对括号,那么删掉括号对,并且将括号对里的字符串翻转,在翻转过程中,使字符串的字母改变大小写。

2024-04-21 14:23:17 550

原创 Educational Codeforces Round 164 (Rated for Div. 2) ---- E. Chain Reaction ---- 题解

但是这样对每一个k暴力求答案的时间复杂度是趋近于 O(n*n),那么想怎么优化,我们可以发现对于9来说, 当k=1--1时提供9的贡献,当k=2--2时提供5的贡献,当k=3--4时提供3的贡献,当k=5--8时提供2的贡献,可以发现计算答案贡献时,其实有部分长的区间贡献是相同的,所以我们可以利用差分数组,来计算区间段的贡献。向怪物发送k伤害的闪电打击,但是攻击只在活着的怪物中传播,假如 a b c d e,b和d怪物死了,如果攻击任意活着的怪物那么只有它自己受到伤害。那么多块区域怎么计算答案。

2024-04-19 11:23:20 211

原创 Codeforces Round 924 (Div. 2) ---- F. Digital Patterns ---- 题解

那么我们可以相当,假设 a1 == a2, 那么每一列的第一行元素都等于第二行元素。假设b1==b2,那么每一行的第一列元素都等于第二列元素。= b2, b2!= b3,那么就可以组成3*3的趣味性方块,并且其中2*2和1*1方块皆为趣味性方块。那么通过上述分析知道,只有出现相邻元素时,他们便无法组成趣味性方块。要求在一个方块中,任意相邻的方块中他的透明度系数不能相同,这样的方块称为趣味性方块,问这样的方块有多少种。那么可以发现最后可以利用八个树状数组来维护a b c d这四个数组信息。

2024-04-18 20:36:10 287

原创 Codeforces Round 924 (Div. 2) --- E. Modular Sequence ---- 题解

那么我们只需要找到满足这样至少需要满足这样的和至少需要多少位,如果少于n-1位即可。(这个需要多少位,可以通过预处理得到)如果我们让第二位接在第一位,那这样预处理是没意义的,他只能针对这一种情况,所以我们让第二位k2为0,但是这样可能导致无法满足,那在这种情况下,我们让第二位接在第一位上,然后让k3为0,如果不行,继续往后延。这里第一个一定要需要填充x,然后后面每一位填充 ai-1 + y 或者 ai-1 % y,那么其实相当于除了第一位固定,后面每一位都可以表现为 a + ki * y;

2024-04-16 23:27:39 153

原创 Codeforces Round 926 (Div. 2) ---- F. Sasha and the Wedding Binary Search Tree --- 题解

显然我们可以得到这个二叉搜索树的中序表现形式,假设为 [2 -1 -1 4 -1 -1 -1 5] 其中-1表示该点的值是任意的,但是必须满足 1 <= -1 <= c。对于第一个数列其中-1可能为2或3或4,如果我们确定了2的个数和3的个数和4的个数,此时那么对应的 -1 -1 这个非降序数列也就确定了,所以非降序数列的个数,就变成了将2个球分为3组的情况数,并且要求每组的个数大于等于0。然后我们发现第一个序列的取值,并不影响下一个序列,所以变成了每个序列答案相乘。

2024-04-16 16:59:07 101

原创 Codeforces Round 926 (Div. 2) ---- E. Sasha and the Happy Tree Cutting ----题解

现在有一颗树,然后给出了k对路径,然后要求路径上至少有一个结点是被染色了的,如果这k对路径没有共用边,那我们至少需要染色k条边。如果有共用边,那么选择将他染色,那么就可以使多个路径满足条件。现在求最小是染色树。已知最多需要20条边,那我们可以找出哪些边可以进行染色(并且它染色后能解决哪些路径),然后进行状压dp。

2024-04-16 14:47:34 414

原创 Codeforces Global Round 25 ---- F. Inversion Composition ---- 题解

假设p有一对 (i,j) 为 (pi,pj) -> (2,3), 如果q2 < q3, 那么提供的答案贡献为0,否则会提供2的答案贡献。假设p有一对 (i,j) 为 (pi,pj) -> (3,2) , 如果p2 > p3,那么提供的答案贡献为1,否则还是提供1的答案贡献。从这里可以分析出,p的逆序对数量应该和k奇偶性相同。有一个初始排列 p,然后现在让我们给出一个q排列数组,并通过p数组和q数组得到qp数组,问是否能得到某组q和qp数组使他们的逆序对数量之和为k。

2024-04-15 21:50:29 262

原创 牛客周赛39 --- G -- 小红不想做平衡树 -- 题解

3.数组先升序后降序,翻转降序区间后,数组变为升序 (需要满足降序区间最小元数大于升序区间最大元数)4.数组先降序后升序,翻转降序区间后,数组变为升序,(需要满足降序区间最大元数小于升序区间最小元数)5.数组先升序再降序后升序,翻转降序区间后数组变为升序,(需要满足3和4的条件)1.本身数组就升序的, 翻转一个长度为1的区间后,数组仍为升序。好数组的定义为 恰好翻转一个区间是得,这个区间变为升序的。2.本身数组就降序的,翻转整个区间后,数组为升序。

2024-04-09 11:28:32 235

原创 Codeforces Round 930 (Div. 2) ---- F. Bitwise Paradox ---- 题解

因为是或运算,可以想到如果区间越大,值肯定越大,但是选的区间越大,max值可能会变得更大,其实不用太大就可以得到答案。那么对于查询区间 [l,r],将其划分为两个区间, 答案区间可能在左区间,也有可能在右区间,也可能即包含左区间也包含右区间。那么我们需要查询区间的a数组最大值,这里可以使用跳表预处理,然后o1的查询区间最大值,如果是实时查询的数据结构,会让时间复杂度变为Q*logN*logN*logV,因为需要查询的区间过多。(每判断一个区间就会查询一次logV*logN次)。

2024-04-05 21:35:42 383

原创 Educational Codeforces Round 162 (Rated for Div. 2) ----- E. Count Paths --- 题解

根据题目中定义的美丽路径,我们可以发现路径只有两种情况:当前结点作为起始结点,那我们只需要知道它的子树下有多少个相同颜色的结点,并且相同颜色的结点会被祖先结点阻挡,那我们只需要统计每个子树拥有x颜色的结点有多少个,记录时排除阻挡造成的影响,这样就可以完成对当前结点作为起始结点的答案统计当前结点中间结点,那么答案只可能出现他的两个子树之间,我们发现上一步我们需要求所以子树当前结点的颜色共有多少个结点,即发现我们需要对这个子树的颜色统计进行合并,并且在合并过程中对此情况下答案进行统计。

2024-04-05 15:04:25 273

原创 Codeforces Round 930 (Div. 2) ---- E. Pokémon Arena ---- 题解

我们考虑一个颜色,从这个点能去的点,能不能去这个点可以用一个代价数组判断,然后我们再考虑到达的点,是否之前通过其他颜色到达过,如果没有,我们衍生这个点其他的颜色。点移动时,我们让他移动到在这个颜色上离他最近的点,如果让他混乱移动,可能第一次到达这个点时代价不是最低的情况,那么这样的衍生并不是好的操作。可以想到的是,可以用最短路来解决这个问题,但是如果简单的建图的话,时间复杂度将会达到 O(n*n*m),我们考虑怎么减少图中边的个数。那么便可以在此基础上利用最短路即可。

2024-04-04 22:30:35 210

原创 Codeforces Round 931 (Div. 2) ---- E. Weird LCM Operations ---- 题解

这是一道构造题,那么观察这个构造有啥性质,观察到最多操作次数为 n/6 + 5,然后每次操作需要选择三个数,如果每次操作的三个数都不和之前的重复的话,应该至少需要n/3次,那么容易想到,每次操作应该只需要操作后半部分,且每次操作之间选择的数不重复。证明:为什么操作后半部分是正确的,假设 n==27,可以发现 13和26本来gcd就是13了,无论26选择哪些数,反正一定会保留13这个因子,则前半部分的gcd是天然满足的。

2024-04-04 20:23:49 143

原创 Codeforces Round 932 (Div. 2) ---- F. Andrey‘s Tree ---- 题解

我们假设删除任意一个结点后,我们会将整个树切分为k个联通块,那么可以明确的知道我们只需要连接(k-1)条边就可以将这k个联通块重新连为一棵树。那么最小代价是啥呢?图解分析第一种情况,有至少一个联通块即拥有小于删除点的数,又有大于删除的数,此时代价就是要增加的边数第二种情况,没有上诉的联通块。我们可以发现我们还是可以将整个联通块连接为 (1,x-1) 和 (x+1,n)的两个联通块,花费为k-2,此时还需要2个花费,将整个联通块连接为(1,n)的联通块,总花费为删除结点后,联通块的个数。

2024-04-04 15:30:21 351

原创 Codeforces Round 932 (Div. 2) ---- E. Distance Learning Courses in MAC ---- 题解

/ 对于这种二进制多个数计算答案,我们应该灵敏的想到是否可以通过枚举二进制位来计算答案。就是对每一个查询找出或和的最大值,那我们想xi 和 yi中哪些位一定会出现在答案中,假设为25 和 31,他们两转为二进制为 (11001) 和 (11111)我们可以想到24一定会进入答案,如果它不是答案的一部分,那无论怎么选都无法满足选择的数大于等于x。那我们这样就可以对[l,r]的答案进行简单计算(这里利用线段树或者树状数组的区间查询即可),那后续剩下的答案怎么办。

2024-04-02 23:42:32 676

原创 Educational Codeforces Round 163 (Rated for Div. 2) --- G. MST with Matching ---- 题解

这里根据离散数学上的定理可知,最大匹配数等价于最小点覆盖, 最小点覆盖的定义是。那么看到 n==20,我们可以想到我们是否可以枚举最小点覆盖的各种情况,然后基于这样的条件下找出当前情况下的最小生成树。那么可以发现这样的时间复杂度为 2^n * n * n。是可以满足时间复杂度的。

2024-04-02 17:49:29 132

原创 Educational Codeforces Round 163 (Rated for Div. 2) ---- F. Rare Coins --- 题解

金币价值是固定的,银币价值是概率确定的。假如3枚银币有2的价值的概率为 C23 * (1/2) ^ 3,这个C组合数打着很麻烦,所以后面用 (2,3) 代替。假设现在有这样一组数据 2 3 5 4,1 0 3 9, 查询1-3,那么答案的概率为:这样的概率计算是O(N)的,但是可以发现上式等价于 [ (0,13) + (1,13) + ..... + (9,13) ] * (1/2) ^ 13我们可以发现如果都能化简成这个形式的话,那么答案就可以用前缀和处理前半部分进而使得答案计算变得容易。

2024-03-30 18:11:25 545

原创 Codeforces Round 934 (Div. 2) ---- counting is fun (Easy and Hard Version)

那么i+1转移 dp[b][c] = dp[m][b] (max(b-c, 0) <= m <= m ) 对m求和。a3 m-2 c: -> a3 >= m-2-c ..... ---- 相当于 ai-2等于这些数(0 ---- m-c-3) 是无效的。a2 m-1 c: -> a2 >= m-1-c ---- 相当于 ai-2等于这些数(0 ---- m-c-2) 是无效的。a1 m c: -> a1 >=m-c ---- 相当于 ai-2等于这些数(0 ---- m-c-1) 是无效的。

2024-03-30 16:13:23 481

原创 Codeforces Round 934 (Div. 2) ---- E - Tree Compass --- 题解

如果我们将直径为一的树和直径为2的树都看作特例的话。可以发现直径为奇数的树 需要 (d+1) / 2次, 直径为偶数的树 需要 (d / 2 - 1) * 2 次并且找不到更加有效的删除方案。我们要使所花的次数尽可能少,等价于我们每次删除的结点尽可能多,那我们就看这样删除有啥性质,是否真的等价。

2024-03-28 17:25:32 215

原创 Codeforces Round 936 (Div. 2) ---- F. Nobody is needed ---- 题解

假设现在有一个数组 2 1 6 3 5 4 8 7,查询区间 [2, 3] 那么就是子数组 [1 6] 有多少个满足要求的索引集,现在我们利用 pos[i],代表i的位置,dp[i] 表示当i作为索引集的最后一个数时,有多少个满足要求的索引集。那我们可以想到从后往前遍历 l,r用pos[i]来约束,那么我们在将这些得到的数据插入到树状数组,每次离线查询即可。也可以翻转整个数组,这样就可以固定r,从前往后遍历,其余操作和上诉描述的类似,可以自己手动模拟一下,这里讲的比较抽象,可以画图理解。

2024-03-28 15:03:26 653

原创 Codeforces Round 936 (Div. 2) ---- E. Girl Permutation ---- 题解 (数论)

先理解什么是前缀最大值,他应该满足什么条件,根据定义可知对于 i 如果满足 所以 j < i,并且有 ai > aj,那么ai就是前缀最大值, 换言之如果数组 [a1, a2,a3,....,ai] ai是其中的最大值,那么ai就是前缀最大值。对于后缀最大值有相反的定义, 如果存在数组 [ai,ai+1,ai+2,......,an] ai是其中的最大值,那么ai就是后缀最大值。那么首先可以确定的是 a1一定是前缀最大值,an一定是后缀最大值。

2024-03-27 16:22:35 781

原创 Codeforces Round 934 (Div. 2) ---- D. Non-Palindromic Substring --- 题解

那么字符串有形如 a1a2a3a4a5....的结构 假设 (a1 a2 a3 a4) 和 (a2 a3 a4 a5) 是回文的,那么可以推出a1 == a2 == a3 == a4 == a5,即只有一个字符重复的字符串才可能出现 不是 k好字符串 (k为偶数) 且此时,奇数也不为好字符串。假设有一个字符串长度为n, 如果这个字符串没有长度为k的回文子串,那么称这个字符串为k好字符串,现在定义f(str) = k1+k2+......,如果字符串str是一个k1字符串,k2字符串......

2024-03-26 21:53:12 508

原创 Codeforces Round 930 (Div. 2) --- D. Pinball --- 题解

假设字符串为 >>> 的过程,但是如果出现字符串形如 这样的双指针每次只能移动个位置,然后时间复杂度任然会退化为O(N*N)的时间复杂度。

2024-03-26 12:50:14 549

原创 牛客周赛round 38 --- G 小红的区间删除 -- 题解

那我们怎么查询删除 [l,r] 这个区间后,逆序对剩下多少个呢,假设我们得到了 删除[l,r-1]区间的逆序对数量, 那么删除r后,逆序对就会减少 s个,其中有a[r]作为逆序对左端点的情况,也有a[r]作为右端点的情况,那我们可以发现我们应该维护两个线段树,一个是 [1,r-1]的信息一个是[r+1,n]的信息,利用这两个线段树的信息就可以查询删除任意区间的剩余逆序对数量了。逆序对可以使用任意分治算法来求得,但是我们要删除一段连续区间,所以这里可以采用线段树或者两个数组进行逆序对的查询。

2024-03-25 12:39:05 258

原创 (AtCoder Beginner Contest 325) ---- D - Printing Machine -- 题解

打印一次后,需要充电一微秒后才能再次打印就可以看作每微妙只能打印一个产品。然后就可以这个题看作一个贪心的过程,我们一定是要每次打印已经进入了打印机的产品中最快退出打印机的产品。因为打印玩它后,你还可以继续打印哪些没有退出打印机的产品,如果先打印后退出的,可能会导致部分产品还没有打印就已经退出。(这里遍历时,如果遇到能加入打印机的产品,也就产品加入打印机)如果整个打印机中没有产品,我们就将时间调整到下一个最快能进入打印机的时刻,这样就可以快速遍历时间。

2024-03-25 10:57:32 267

原创 (AtCoder Beginner Contest 346) ---- F - SSttrriinngg in StringString --- 题解

对于t字符串我们应该先找到第一个字符,满足有k个之后,当前在那个位置,又因为S这个数组是循环的,那么这个位置,就可以对应到s的一个位置上,第二个字符那么我们只能选择这个位置后的剩余字符,然后看还需要多少个完整的s字符串才能拼接成k个字符,那么这个k的范围为[1,1e17] 那么可以使用二分答案进行枚举。

2024-03-24 17:27:47 184

原创 Codeforces Round 936 (Div. 2) --- D - Birthday Gift -- 题解 (一个很好的思维题)

如果我们分成k个段后能使得 cur = (xxxx0xxxxxx) (2进制表示)如果我们能使得在某位x为1,并且答案当前位为0,那么后面的值无论是什么,都能满足或和小于等于x。那这种情况下的最优是什么呢,我们假设 a[i] 和 a[j]在当前位为1,那我们便组成一个区间[i,j],这样的区间一定不能划分,但是剩余数,因为无论组成什么都能满足答案,所以让这些数,组成一个单独的区间。如果x当前位为0, 如果我们不能使得分成k段后,当前位为0,那么无论后面怎么分都是无效解。

2024-03-24 11:59:39 326

原创 Educational Codeforces Round 155 (Rated for Div. 2) --- D. Sum of XOR Functions 题解 (思维题)

统计区间 [L,R]的异或值,其实我们看作枚举每个二进制位,看哪些区间在这个二进制位上有答案贡献,那么1 - i在当前位异或值为0时,那么他与前面 1-k在这位异或值不为0的点k,可以组成区间[K+1,i],这个区间对于答案是有贡献的。又因为它要乘以一个区间的长度,那么如果在1-i位可以组成三个区间,那么长度就为 (3*i) - (k1+k2+k3) ,这就是三个区间的总长度,然后枚举i,就可以算出在这一个二进位上的所有答案区间的长度,利用长度乘以这个二进制位的贡献即可。那么这样也就实现了对答案的统计。

2024-03-22 12:47:47 266

原创 (AtCoder Beginner Contest 327) --- F-Apples --- 题解 (一个比较难想的线段树题)

题目要求我们选择任意一对S,L,让苹果满足 S-0.5<= T<= S + D - 0.5 和 L-0.5 <= X <= L + W -0.5的苹果数量尽可能多,并且输出在能选择的可能性中最多的苹果数量为多少,其实我们可以发现这个需要满足的条件其实等价于 S <= T <= S+D 和 L <= x <= L + W,这是因为T和X都是整数。那我们可以将所有苹果按照T排序,那么我们可以利用双指针来固定任意一个S的可能性,那么我们就需要查询在当前时间轴下,怎么选择L,可以使得答案最优。

2024-03-21 23:14:44 141

原创 (AtCoder Beginner Contest 345) ---- F - Many Lamps -- 题解

那么我们可以发现我们无论组合都没法使亮着的灯变为偶数,那么如果我们已知一个灯为亮,此时选择这条线路,要么能使亮灯数增加,要么无变化,那么只要 当前亮灯数小于目标亮灯数就可以选择这条线路,因为这是个无向有环图,所以每遍历一个点做一次记录就好,只遍历没有标记过的点。(1) 一个城市亮着灯,另一个城市没亮灯,此时选择这条线路,灯的点亮数不变。(2) 两个城市未亮灯,选择此线路,亮灯数加2。(3)两个城市都亮着灯,选择此线路,亮灯数减2。对于每个线只有三种情况。这样深搜时,只要有答案便能找到答案。

2024-03-20 16:13:48 188

原创 Atcoder Beginner Contest 345 --- E - Colorful Subsequence --- 题解 ---- (很好的dp题)

这道题很容易可以看出是一道dp题,可以设计出dp状态为 dp[i][j][k]代表当前在第i个球,已经删除了j个球,并且当前删除j个球后最右边的球的颜色为k。因为颜色 C<=N,那么整个dp的转移时间复杂度为 O(N * N * K)超时观察这个状态的转移过程 如果当前球的颜色为 k, 那么dp[i][j][k] = max( dp[i-1][j][f] ) + V (f!

2024-03-19 22:05:32 382

原创 ABC345 D Tiling 题解

【代码】ABC345 D Tiling 题解。

2024-03-18 11:24:10 390

原创 Codeforces Round 934 (Div. 2) --- C. MEX Game 1 --- 题解

重要的是那种只有一个的数字,因为如果这个数字有两个及以上,那么我可以再鲍勃删除之后,再拿,也一定能拿得到,所以瓶颈是只有一个的数字,如果这样的数字有多个,那我们只能选择最小的那个。然后循环所有数字,看我们最小的拿不到的数字是那个,这个数字就是答案。

2024-03-18 11:17:40 377

原创 牛牛的凑数游戏 --- 题解

一直迭代下去最后一定会因为某些数字的未出现而结束。那么问题变为了查询 [l,r]这个区间 里面数字属于 [L,R]这个范围的和为多少。这个可以使用主席树实现。

2024-03-14 13:56:46 533

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除