![](https://img-blog.csdnimg.cn/direct/9c04a3450cc24f4ebaee5f99b8e91955.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
codeforces
文章平均质量分 93
每日一练cf 欢迎一起
俩阳
做AC梦
展开
-
Codeforces Round 第932轮(Div. 2)[A]Entertainment in MAC题解
这是英文原题,中文大意在下面~InputOutput中文大意,除去繁杂的题干这个问题主要是关于字符串操作的,每个测试用例给定一个字符串和一个偶数次的操作数。你可以选择执行两种操作之一:1.将字符串翻转,2.或者将翻转后的字符串添加到原字符串的末尾。你必须确保总共执行的操作数是给定的偶数。问题的目的是找到经过这些操作后得到的字典序最小的字符串,所谓字典序最小是指在所有通过操作得到的字符串中,按字典排序最小的那个。原创 2024-05-14 23:49:24 · 1925 阅读 · 3 评论 -
Codeforces 第 934 轮[C]墨西哥游戏1题解
因此,Alice 可以采取一种策略,在每一轮中选择当前数组 a 中的最大元素,并且尽可能地选择那些不会使得数组 c 的 MEX 值增大的元素。通过这种方式,代码实现了问题中描述的贪心策略,即选择第一个频率为0的元素作为 MEX,或者选择第二个频率为1的元素作为 MEX,以最大化 Alice 的得分并最小化 Bob 的得分。- 如果频率为1的元素存在,保存第一个出现的元素,计数器 c 记录已经出现的频率为1的元素个数。- 如果已经出现了两个频率为1的元素,或者当前元素的频率为0,则选择该元素作为 MEX。原创 2024-05-13 21:52:15 · 770 阅读 · 2 评论 -
Codeforces 第934轮 [C] Tree Compass题解
但如果直线长度是 4 的倍数加 2,我们就多出了一个操作,因此我们可以灵活地应对,使用与奇数长度相同的方法。具体地,我们可以找到树的直径(即最长路径),然后选择直径上的中间节点作为起始点,向两边延伸染色。因为树是一个连通且无环的图,所以宽度优先搜索的时间复杂度可以简化为 O(n),而且树的直径长度不会超过树的节点数,因此可以认为算法的时间复杂度是线性的。例如对一个长度为5的现行结构,我们可以选择3作为起始点,然后向左右两边延伸染色,知道达到边界,这样就可以用两次操作完成染色。英文版~中文大意在下面。原创 2024-05-12 20:09:43 · 881 阅读 · 0 评论 -
Codeforces 第942轮[B] Reverse Card (Easy&&HardVersion)题解
而对于困难版本(B2),我们需要计算满足条件 𝑏⋅gcd(𝑎,𝑏) 是 𝑎+𝑏 的倍数的有序对 (𝑎,𝑏) 的数量。对于简单版本(B1),我们需要计算满足条件 𝑎+𝑏 是 𝑏⋅gcd(𝑎,𝑏) 的倍数的有序对 (𝑎,𝑏) 的数量。这可以通过枚举所有可能的 𝑎 和 𝑏 的值,然后检查是否满足条件来完成。由于较小的约束条件 (1≤𝑛,𝑚≤2⋅10^6),这种方法是可行的。都已经包含在这个答案中,所以我们需要在ans的最后减一才是最终的答案。𝑎+𝑏 是 𝑏⋅gcd(𝑎,𝑏)𝑏⋅gcd(𝑎,𝑏) 是 𝑎+𝑏。原创 2024-05-11 22:38:42 · 1055 阅读 · 1 评论 -
Codeforces第 941 轮[A]Card Exchange题解
否则,我们取出任意一张卡片的号码 𝑥,然后获取剩余的 𝑘-1 份副本的号码为 𝑥 的卡片。1. 基本情况处理:首先,我们需要处理一个基本情况,即如果你手中的牌中没有任何数字的至少 𝑘 份副本,那么你无法执行任何操作,因此答案就是手中牌的数量 𝑛。每个测试用例的第一行包含两个整数𝑛和𝑘(1≤𝑛≤100,2≤𝑘≤100),分别表示手中牌的数量和每次操作中交换的牌的数量。- 如果你的手中的卡片数量少于 𝑘,那么你无法执行任何操作,因此答案一定不会超过 𝑘-1。- 因此,我们的算法得到的结果是最优的。原创 2024-05-10 19:53:18 · 1844 阅读 · 1 评论 -
Codeforces第 941 轮[A]Everything Nim题解
这意味着我们最终会达到至少一个堆大小为2的状态,因为𝑏不在当前堆大小的集合中,所以我们需要取出最小的堆。如果𝑏为偶数,Bob将获胜,如果为奇数,Alice将获胜。游戏规则是这样的:有n堆石头,每一轮玩家选择一个正整数k,这个k不能超过所有非空石头堆的石头数量,然后每一堆石头都会被减去k个石头。如果最小堆的大小为1,Alice必须选择𝑘=1,因此我们可以假设Bob先走,并从所有堆中减去1,然后再轮到Alice。为了找出不是堆大小的最小正整数𝑏,我们可以跟踪最大的堆大小𝑎,然后将所有堆的大小放入一个集合中。原创 2024-05-10 17:32:30 · 1722 阅读 · 1 评论 -
Codeforces 第 940 轮&& CodeCraft-23 (Div. 2) [C]How Does the Rook Move题解
在这个问题中,我们可以通过分析问题的性质,发现存在着重叠的子问题,并且问题的最优解可以由子问题的最优解递推得到,因此动态规划是一个合适的解决方法。你先开始,当你在你的回合做出有效的移动时,在位置 (𝑟, 𝑐) 放置一个白色车,计算机会模仿你,在它的回合在位置 (𝑐, 𝑟) 放置一个黑色车。如果存在一个坐标 (𝑟, 𝑐),其中一个配置中有一辆车而另一个配置中没有车,或者该坐标上车的颜色不同,则认为两个配置是不同的。时的最终配置数的子问题,并利用已知的子问题的解来求解更大规模的问题,最终得到了整体的最优解。原创 2024-05-09 20:59:37 · 764 阅读 · 1 评论 -
Codeforces第 941 轮[B]缺失子序列和题解
对于一个固定的k值,我们可以构造一个数列,使得对于任意小于k的数值,都可以找到一个子序列的和等于它。这意味着,只要我们能够找到一个数列满足条件,我们就可以忽略输入中的 𝑛,并假设它始终为。那么我们应该怎么构造这个序列呢,如果没有限制条件,最自然的做法是从1开始,每次将前面一个数乘以2,直到达到一个足够大的值,这样,任何数都可以用这个数列的某个子序列的和表示出来。2. 对于所有 1 ≤ 𝑣 ≤ 𝑛 且 𝑣 ≠ 𝑘,序列𝑎中存在一个子序列的和为 𝑣。,都存在一个子序列的和为v,我们考虑这几种情况。原创 2024-05-08 21:22:32 · 836 阅读 · 6 评论