
Codeforces
文章平均质量分 68
ullio
笑渐不闻声渐悄,多情总被无情恼。
展开
-
cf1856d - More Wrong
一个数是最大的充要条件是 , 它和前面的逆序对为 0 , 和后面的逆序对为长度。但是代价远远超出限制 , 想办法优化 , 而求最大值是一个 RMQ 模型。所以可以得到一个最基础的算法 , 对每一个数四次算出前后逆序对数。交互题 , 首先观察交互操作与待求值之间的联系.由上述最大值的充要条件可以得到 , 只要。层进行到第 2 层 , 所以总复杂度为。之间的大小关系 , 就知道了。每一块进行一次向上合并的代价为。考虑复杂度 , 分治过程有。, 那么一层的代价就是。, 分治过程就可以继续。这一段的逆序对个数为。原创 2023-08-07 11:34:28 · 312 阅读 · 0 评论 -
cf1854b - Earn or Unlock
张卡牌按顺序从上到下摆放 , 初始时第一张已经解锁 , 其他的未解锁 , 每张卡牌上有一个值。下 , 解锁卡片的数量加上获得的点数应该是一个定值 , 这个定值就是前。游戏按轮次进行. 每一轮 , 你需要选定一张解锁的卡牌 , 其值为。复杂度并没有直观的下降 , 但有一点不同了 , dp 的值现在是。) 如果知道了解锁卡片的数量 , 那么就可以算出获得的点数。那一维可以删掉 , 这样就是一个 0/1 背包的形态.这类直接操作有着后效性的题的入手点 : dp .最后 , 如果假设解锁卡片的数量为。原创 2023-07-30 11:58:25 · 443 阅读 · 2 评论 -
CF1719 --- Codeforces Round #814 (Div. 2)
的循环节 , 显然 , 这两段一定有一个大小关系 , 不妨假设前面的一半点的和大于后面一半点的和 , 那么我们只会选择前面的一半 , 也就是在假设下 , 选择从。产生的贡献的最大值 , 这告诉我们如果一个长度的倍数在集合中 , 那么枚举他就没有意义 , 为了简化思路 , 对于长度。, 再观察式子 , 可以发现最后所有的长度的循环一定都是一个完整的最小循环重复若干遍 , 所以对于初始的。, 所以每一次修改的复杂度为循环节长度的集合的大小 , 但是问题出现在。的质因数即可 , 那么循环节长度集合的个数就是。原创 2022-08-25 02:48:56 · 403 阅读 · 1 评论 -
CF1720 --- Codeforces Round #815 (Div. 2)
CF1720 --- Codeforces Round #815 (Div. 2)原创 2022-08-20 04:06:04 · 313 阅读 · 0 评论 -
Educational Codeforces Round 118 (Rated for Div. 2)
Educational Codeforces Round 118 (Rated for Div. 2)A模拟 , 显然 ppp 之差大于 10 肯定是 0#include <bits/stdc++.h>using namespace std;std::mt19937 rng(std::random_device{}());typedef long double ld;typedef long long ll;typedef unsigned long long ull;typ原创 2021-12-03 23:22:28 · 782 阅读 · 0 评论 -
Codeforces Round #756 (Div. 3)
Codeforces 1611A末尾是偶数0第一位是偶数1如果有偶数是2否则是-1#include <bits/stdc++.h>using namespace std;std::mt19937 rng(std::random_device{}());typedef long double ld;typedef long long ll;typedef unsigned long long ull;typedef const int& cint;typedef原创 2021-11-26 14:43:31 · 1787 阅读 · 0 评论 -
Codeforces 1610D. Not Quite Lee
Codeforces 1610D. Not Quite Lee思路首先容易发现如果 bib_ibi 是奇数,那么它的贡献可以写成 kibik_ib_ikibi 其中 kik_iki 是任意整数如果 bib_ibi 是偶数,那么可以写成 bi2+kibi\cfrac{b_i}{2}+k_ib_i2bi+kibi稍微推一下可以发现,一个序列里只要有一个奇数那么肯定有一种方法变为0奇数和奇数相消取 lcmlcmlcm奇数和偶数相消写成丢番图方程的形式,由裴蜀定理一定有解(两者的 g原创 2021-11-24 21:59:27 · 503 阅读 · 0 评论 -
Codeforces 1612C. Keshi Is Throwing a Party
Codeforces 1612C. Keshi Is Throwing a Party思路首先容易发现,选择的人数具有单调性,是可以二分的假设最后答案选了 xxx 个人,那么对于一个人有影响的,就只有了他前面选了多少人,因为前面确定了后面就确定了更具体地说,如果第 iii 个人是按顺序的第 kkk 个被选,那么 x−k≤aix-k\leq a_ix−k≤ai 且 k≤bik \leq b_ik≤bi 综合一下可以得到 x−ai≤k≤bix-a_i\leq k\leq b_ix−ai≤k≤bi原创 2021-11-24 21:58:53 · 522 阅读 · 0 评论 -
CF GYM 103186 B
CF GYM 103186 B思路考虑分解来做。假设已经知道了 c 的选择,那么该怎么确定 a,b 的选择不难发现对 ai−bia_i-b_iai−bi 从大到小排序,前 a 个一定选 aia_iai可以这么想,假设剩余的全选了 b ,那么此时在不改变 c 的选择下 一定选择那些 ai−bia_i-b_iai−bi 最大的地方改成 aia_iai代码#include <bits/stdc++.h>using namespace std;typedef long d原创 2021-10-22 20:35:16 · 147 阅读 · 0 评论 -
Codeforces 1586E. Moment of Bloom
Codeforces 1586E. Moment of Bloom思路从原图构造任意生成树,在生成树上暴力即可,下证正确性。首先证明,对于树,在操作后清除所有奇数边所需的次数是 sum2\cfrac{sum}{2}2sum ,其中 sumsumsum 代表奇数节点个数因为一次操作最多只能改变两个节点的奇偶性,全为偶数的必要条件为所有节点都为奇数,又由欧拉路径,总存在可行解,证毕然后证明,任意原图的路径选择不会优于生成树上的路径选择原图通过操作后,将得到的奇数边清除的次数下限亦为 sum2\cf原创 2021-10-18 22:10:47 · 333 阅读 · 0 评论 -
Codeforces 1592F1. Alice and Recoloring 1
Codeforces 1592F1. Alice and Recoloring 1思路首先,容易发现操作二三是无效操作,可以用操作一在更优解下实现现在只考虑操作一四,记为操作 a 和 b可以发现将初始图转化为给定图等价于将给定图转化为初始图,因为对给定图运用将初始图转化为给定图的一系列操作,就可以将它转化为初始图所以,问题变成了,给定一幅含 W 和 B 的图,仅通过 a 和 b 操作将它转化为仅含 W 的图,求最小转化代价考虑一个新数组 C(i,j)C_{(i,j)}C(i,j) 表示 (i,原创 2021-10-04 16:17:18 · 387 阅读 · 2 评论 -
Codeforces 1562E Rescue Niwen!
Codeforces 1562E Rescue Niwen!思路对于字符串 s1s2s3...sns_1s_2s_3...s_ns1s2s3...sn我们先来考虑一个子集,仅讨论以 s1,s2s_1,s_2s1,s2 两个位置为开头的扩展字符串列中的最长递增子序列,即 s1;...;s1,...,sn;s2;...;s2...sns_1;...;s_1,...,s_n;s_2;...;s_2...s_ns1;...;s1,...,sn;s2;...;s2...sn 中的最长递增原创 2021-08-27 04:20:35 · 236 阅读 · 0 评论 -
CF1562D Two Hundred Twenty One
CF1562D Two Hundred Twenty One思路以下所有区间和计算时均以点 1 系数为正作为基准结论一:区间和为 0 不用删显然结论二:区间和为奇数删一个举个实际例子,不妨假设 l 到 r 区间和是 5那么一定存在一个点 s,使得 l 到 s 是 2 ,s+1 到 r 是 3这个点一定存在,因为区间长度增加 1 ,区间和的变化的绝对值就是 1不难发现,如果 s+1 对区间和的贡献是 1 的话,删掉它就一定满足条件,即 +2 +1 +2 -> +2 -2既然要从原创 2021-08-27 01:32:22 · 251 阅读 · 0 评论 -
CF1561C Deep Down Below
CF1561C Deep Down Below思路考虑一种特殊情况,只有一个洞穴,记其怪物属性为 a1,a2,...,ana_1,a_2,...,a_na1,a2,...,an不难发现,仅有英雄属性值在进入洞穴前大于 max(ai−i+1)max(a_i-i+1)max(ai−i+1) 时,英雄才能安全通过这个洞穴现在考虑一般情况,对于洞穴 i ,设 di=max(ai,1,ai,2,...,ai,x)d_i=max(a_{i,1},a_{i,2},...,a_{i,x})di=max(a原创 2021-08-25 03:41:25 · 252 阅读 · 0 评论 -
CF1561E Bottom-Tier Reversals
CF1561E Bottom-Tier Reversals思路首先,可以发现交换不会改变一个数的位置的奇偶性,即一个数交换前后的位置的奇偶性相同所以如果奇数位出现了偶数一定不成立那么先猜测其余情况一定有解,尝试构造一下首先,我们非常想先让最大的数回到自己的位置,这样,以后的翻转就不用考虑最大数那一位然后发现,只有次大的数无法自己回到自己的位置,因为次大的数一定是偶数(保证n是奇数),而翻转序列的长度需要是奇数那么当尝试将次大的数放回自己的位置时,最大的数的位置又发生了变动,这是我们非常不想看到原创 2021-08-25 03:26:53 · 198 阅读 · 0 评论 -
CF1561D Up the Strip
CF1561D Up the Strip思路对于操作一,是最基础的前缀和优化考虑操作二对于点 i ,我们想知道通过除以某个数,哪个范围可以到它考虑一种情况,除数是 22i,2i+12i,2i+12i,2i+1 可以到,其余都无法通过除以 2 到达点 i进一步发现,对于任意除数 x ,可以到达的范围是 [ix,ix+x−1][ix,ix+x-1][ix,ix+x−1]所以从 n 向 1 转移, 转移时枚举倍数, 维护前缀和复杂度是调和级数代码#include <bits/stdc+原创 2021-08-25 03:11:41 · 169 阅读 · 0 评论 -
CF1559E Mocha and Stars
CF1559E Mocha and Stars思路观察数据范围,大概 Θ(nmlogm)\Theta(nm\log m)Θ(nmlogm) 是可行的那么有了一个基本的想法, dpi,jdp_{i,j}dpi,j 表示选到了第 i 位,且当前所选数的和是 j 的方法数但是这样最后的 dp 值里面会有 gcd 不为 1 的情况以下默认省略和不大于m考虑容斥原理如果 gcd 不为 1 ,那么它一定是某一个质数的倍数所以减去所有 gcd 为质数倍数的情况,但是这样子我们会将一些 gcd 为特定值原创 2021-08-24 01:04:30 · 176 阅读 · 0 评论 -
CF1559D2 Mocha and Diana (Hard Version)
CF1559D2 Mocha and Diana (Hard Version)思路以下,两图分别称为 A , B首先,来证明一个贪心策略:有能连的边就连,或者说连边不会影响最大值考虑一种特殊情况,A 只有两个联通块,记为 x 和 y , B 只有两个联通块如果从 x 中选出任意一点都无法连接到 y 中任意一点,那么说明 x 中任意一点和 y 中任意一点在 B 中在一个连通块内这样推得 B 仅有唯一联通块,矛盾所以上述情况一定可以连一条边有一个显然的东西,连一条边会让 A 和 B 的联通块个数原创 2021-08-24 00:57:27 · 224 阅读 · 0 评论 -
CF1452D
Educational Codeforces Round 98 (Rated for Div. 2) D大意有 n+2n+2n+2 个村庄,按从 000 到 n+1n+1n+1 标号。村庄 111 到 nnn 中允许安装灯塔,每个村庄有二分之一的概率被安装(互相独立)。现在,对于一种安装方法,你需要给予每个灯塔能量 p∈N∗p\in N^{*}p∈N∗ 。如果一个位于 iii 的灯塔被赋予了能量 ppp ,那么,所有满足 ∣c−i∣<p|c-i|<p∣c−i∣<p 的标号为 cc原创 2021-08-24 00:45:25 · 105 阅读 · 0 评论