
Codeforces
文章平均质量分 83
Codeforces刷题
Auto114514
摆烂ing
展开
-
Codeforces Hello 2025(A—D)
首先,最优答案一定在这样的线段上:最大值和最小值分别在线段的两个端点上。如果不在端点上,我们便可以通过缩短区间来减小(r-l)的值来增大答案。原创 2025-01-05 13:33:40 · 1092 阅读 · 0 评论 -
Educational Codeforces Round 88 E. Modular Stability
求出值域范围内有多少个它的倍数,然后使用组合数学计算答案即可。因此,我们可以枚举最小的。的倍数时才满足条件。原创 2024-10-29 21:13:11 · 1046 阅读 · 0 评论 -
Codeforces Round 673 (Div. 1) B. Make Them Equal(思维)
时可以最细化每一个数的操作,所以我们考虑所有操作围绕。加的数相同,所以每一次操作相当于将一个值从。原创 2024-10-25 15:25:23 · 963 阅读 · 0 评论 -
Educational Codeforces Round 80 D. Minimax Problem(二分,状态压缩)
在check函数里面,我们将原矩阵中大于等于。暴力枚举两种状态,如果这两种状态都出现过且。我们使用二分答案,考虑如何去check。按照每一行进行二进制状压,因为。看到最小值最大我们很容易想到。来记录每一行状压的结果。原创 2024-10-20 15:43:09 · 975 阅读 · 0 评论 -
Codeforces Round 979 (Div. 2)(A,B,C,D)(思维,线段树)
因此我们可以使用线段树来维护区间最大值。),我们统计其左边的最大值是否为。,则为YES,否则为NO。就为YES,否则为NO。原创 2024-10-20 13:29:46 · 928 阅读 · 0 评论 -
Codeforces Round 924 (Div. 2) D. Lonely Mountain Dungeons(推式子,思维,差分,前缀和)
因此我们可以直接枚举种族和队伍个数进行计算,最后差分前缀和就可以了。因为同一个队伍中的人不能互相产生贡献,所以尽可能平均分配是最优的。根据等差数列求和公式,可以一步得出。个队伍中可以获得的贡献。原创 2024-10-17 11:08:07 · 1020 阅读 · 0 评论 -
Codeforces Round 946 (Div. 3) F题 Cutting Game(双指针,模拟)
使用双指针,维护两个数组剩下的点的头和尾。维护两个数组,一个按照。原创 2024-10-15 20:39:08 · 356 阅读 · 0 评论 -
Codeforces Round 948 (Div. 2) C题 Nikita and LCM(LCM,思维)
数组的任意一个子序列的最小公倍数(LCM),其一定为。,并同时记录子序列的长度的最大值即可。是否为满足要求的子序列的。原创 2024-10-14 21:44:23 · 884 阅读 · 0 评论 -
Codeforces Round 973 (Div. 2) D题 Minimize the Difference(二分,贪心)
根据题目要求,我们发现前面的数可以任意小,后面的数可以任意大。因此,最大值和最小值是具有单调性的。的最小值,实际上就是要求最大值的最小值和最小值的最大值。我们直接二分最大值和最小值即可。原创 2024-10-10 16:32:56 · 861 阅读 · 0 评论 -
Codeforces Round 974 (Div. 3) H题 Robin Hood Archery(基础莫队,随机异或哈希)
因为警长是后手,按照最优的策略,只有每一种数的个数是偶数个的时候,警长会平局,否则警长会输。但这样随便一个hack都可以死(比如1,2,4,7)。随机映射到一个极大的范围,之后使用异或哈希即可。是否可以两两抵消,我们可以通过区间异或值是否为。因此,我们可以使用基础莫队进行离线求解。随着询问区间端点的变化,答案的转移是。但我们可以进行随机赋值,把。原创 2024-10-10 11:36:36 · 1394 阅读 · 0 评论 -
Codeforces Round 977 (Div. 2)E1 Digital Village (Easy Version)(Floyd,贪心)
之后,我们通过在线操作,每次贪心地选出最优的一个城市,并不断更新答案。算法预处理出任意两座城市之间的最大延迟时间。时的最优解,之后从剩下的点里面挑出一个能够使。时最优的点,以此类推。原创 2024-10-06 21:54:42 · 1232 阅读 · 8 评论 -
Codeforces Round 977 (Div. 2) C2 Adjust The Presentation (Hard Version)(思维,set)
数组单调不减时才会有解。名成员最早上场的时间。原创 2024-10-06 19:52:16 · 1151 阅读 · 0 评论 -
Codeforces Round 121 (Div. 1) C题 Fools and Roads(LCA最近公共祖先,树上差分)
先预处理出这棵树的LCA,之后对于每一对。树上差分记得从叶子向根节点,不要弄反。一道比较板的LCA和树上差分的题。,在树上做差分,最后用。原创 2024-10-03 11:33:14 · 326 阅读 · 0 评论 -
Codeforces Round 976 (Div. 2)(A,B,C,D,E)并查集,区间合并,概率dp
对于合并后的区间,我们使用并查集进行暴力缩点,最后统计连通块的数量即可。之后,我们按照分好的每个小组依次进行区间合并。灯泡最后为开或关,与开关灯的操作次数有关。,因此最后开着的灯的操作次数为偶数。因为,只有平方数有奇数个因数,所以。因此我们可以直接二分查找答案求解。的该位取什么值,然后分类讨论即可。所以可以从高位到低位贪心地确定。每次开关灯的条件是包含因数。依次对每一个区间进行分组。排除所有平方数的个数即为。的整次幂从大到小枚举。原创 2024-10-02 20:21:07 · 1218 阅读 · 0 评论 -
Codeforces Round 975 (Div. 2)(A,B,C,D线段树解法,E)
因此我们可以用线段树动态维护区间最大值,区间查询操作为加减,枚举每一个。我们考虑预处理出每一个区间对答案产生的贡献。的时候,只需要对原先的卡牌进行分组即可。分别求出奇数位和偶数位的最大值,之后进行比较即可。因此,我们可以预处理出前缀最小值和后缀最小值。这个时间节段的每一个节点已经被征服了多少个点。个卡牌分为一组,对于我们最后一组的卡牌,会有。表示卡牌个数最多的那个卡牌类型的数量。的区间,每一个点都减去对应的时间。个,如果我们想要将其补全,需要再添加。的时候,我们依旧假设可以将每。中间的数对答案产生的贡献。原创 2024-09-30 22:28:11 · 2671 阅读 · 0 评论 -
Codeforces Round 301 (Div. 2) C题 Ice Cave(BFS)
从起点开始,向四个方向进行扩展,每到达一个节点就修改一下该节点的状态(如果该节点是完整的冰块),如果能走到终点就是YES,否则就是NO。原创 2024-09-26 20:18:58 · 258 阅读 · 0 评论 -
Codeforces Round 668 (Div. 1) B题 Tree Tag
【代码】Codeforces Round 668 (Div. 1) B题 Tree Tag。原创 2024-09-26 19:14:08 · 832 阅读 · 0 评论 -
Codeforces Round 592 (Div. 2) C题 The Football Season(Exgcd)
因此本题使用扩展欧几里得即可。原创 2024-09-26 15:10:26 · 394 阅读 · 0 评论 -
Codeforces Round 578 (Div. 2) E题 Compress Words(扩展KMP)
部分进行拼接,然后使用扩展KMP算法求出。数组的含义可以直接计算答案。原创 2024-09-25 22:16:16 · 1319 阅读 · 0 评论 -
Educational Codeforces Round 110 (Rated for Div. 2) D题 Playoff Tournament(线段树,模拟)
容易发现,所有的比赛可以看成一棵满二叉树,因此我们可以使用线段树进行求解。,其左子树代表编号更小的参赛选手,右子树代表编号更大的参赛选手。对于每一次的单点修改,我们可以使用两个。我们规定,对于线段树上的一个节点。对线段树中的节点下标与字符串。,则线段树对应节点的。,则线段树对应节点的。,则线段树对应节点的。原创 2024-09-24 21:23:56 · 1107 阅读 · 0 评论 -
Codeforces Round 891 (Div. 3) G题 Counting Graphs(最小生成树,快速幂维护加权方案数)
考虑将给出的树的边按照权值从小到大排序,并模拟最小生成树的过程。算法在每次合并两个连通块的过程中,会浪费掉两个连通块大小乘积。最后,用快速幂维护枚举每条边时可行方案数的乘积即可。被浪费掉的边,可以选择的权值为。(因为有不选的情况,所以要。当前枚举的这条边的权值。原创 2024-09-23 17:26:48 · 568 阅读 · 0 评论 -
Educational Codeforces Round 161 D题 Berserk Monsters(双向链表,模拟)
记录下一轮有可能被删除的点的下标,用链表维护当前存在的序列。被删掉,则下一轮可能被删掉的点为其前驱和后继。的前驱和后继也都没有被删掉,则元素。在下一轮也不会成为被删除的点。没有被删掉,而当前序列的。原创 2024-09-23 00:03:00 · 941 阅读 · 0 评论 -
Educational Codeforces Round 67 E题 Tree Painting(换根dp)
再考虑父节点的方向的贡献,也就是图中红圈中的部分。号节点孩子的贡献,也就是图中绿圈中的点,答案为。如果枚举每一个点来计算答案,时间复杂度为。号节点相连的子树都会产生贡献,也就是。,会超时,因此我们考虑使用换根。数组从父节点向子节点进行转移。号节点为根的子树,其他与。原创 2024-09-22 13:59:51 · 711 阅读 · 0 评论 -
Codeforces Round 967 (Div. 2) D题 Longest Max Min Subsequence(模拟,栈)
第一步:我们先考虑每个元素恰好出现一次的子序列中字典序最小的序列如何求得。我们可以维护一个栈,从前往后遍历,如果新加入的元素比栈尾元素小,就将其弹出,保证字典序最小。因为要保证每个元素恰好出现一次,因此我们可以使用一个标记数组,标记哪些元素已经入栈。对于已经在栈内的元素,我们选择不进行任何处理。第二步:考虑如何维护栈中的元素,使得奇数位最大化,偶数位最小化。我们可以同时考虑栈顶的前两个元素,以保证维护一个波浪形的栈。对于长度相等的子序列,转化为最大化奇数位,最小化偶数位,因此我们考虑用栈进行模拟。原创 2024-09-19 17:55:15 · 405 阅读 · 0 评论 -
Codeforces Round 644 (Div. 3) G题 A/B Matrix
每一行都要有a个1,每一列都要有b个1。在构造矩阵时,我们在每一行都放连续的。时,输出NO,否则为YES。,这样就满足了“每一行都有。,都放在上一行最后一个。的后面(如果到达了第。原创 2024-09-14 12:42:52 · 990 阅读 · 0 评论