#Codeforces
文章平均质量分 68
PYL2077
OIer
展开
-
Codeforces 1931E Anna and the Valentine‘s Day Gift
【代码】Codeforces 1931E Anna and the Valentine‘s Day Gift。原创 2024-02-18 19:07:46 · 981 阅读 · 0 评论 -
Codeforces 1931F Chat Screenshots
【代码】Codeforces 1931F Chat Screenshots。原创 2024-02-18 17:59:17 · 512 阅读 · 0 评论 -
Codeforces 1928B Equalize
【代码】Codeforces 1928B Equalize。原创 2024-02-12 17:20:05 · 798 阅读 · 0 评论 -
Codeforces 1849D Array Painting
【代码】Codeforces 1849D Array Painting。原创 2023-09-05 17:08:16 · 179 阅读 · 0 评论 -
Codeforces 1807F
【代码】Codeforces 1807F。原创 2023-07-14 20:51:16 · 251 阅读 · 0 评论 -
Codeforces 1720D1 Xor-Subsequence (easy version)
Codeforces 1720D1 Xor-Subsequence (easy version)原创 2022-12-11 07:47:23 · 520 阅读 · 1 评论 -
CF1721D Maximum AND
CF1721D原创 2022-11-19 21:41:40 · 498 阅读 · 0 评论 -
CF1722E L-shapes
CF1722E L-shapes原创 2022-11-09 18:47:20 · 168 阅读 · 0 评论 -
CF1622E Math Test
题目链接虽然说此题只涉及到贪心和枚举,但是有一定思维难度首先,我们发现此题复杂度瓶颈在于求和中的绝对值符号,因为我们不能对每一个排列 ppp 都求出每个人对应的得分 rrr。那么,我们考虑消除绝对值符号对答案的影响考虑将绝对值符号拆开,那么对于每一个 iii 就会有 xi−rix_i-r_ixi−ri 和 ri−xir_i-x_iri−xi 两种情况。 由于 n≤10n \le 10n≤10,所以总共只会有 2102^{10}210 种情况。那么对于每种情况,由于 xix_ixi 是定值,原创 2022-05-17 16:21:46 · 1164 阅读 · 0 评论 -
CF1621E New School
Statement较简单的一道题,不涉及到任何高级算法,就是码量有点大…首先,考虑怎样判断没有学生退学的时候是否满足要求将所有小组的年龄 ave1…mave_{1\dots m}ave1…m 和老师的年龄 a1…na_{1\dots n}a1…n 降序排列后,当且仅当 ∀(1≤i≤m)\forall (1 \le i \le m)∀(1≤i≤m) 满足 avei≤aiave_i \le a_iavei≤ai 时,才满足题目要求对于每一个学生退学的情况,只会改变它所在组别 ppp 的平均值,那原创 2022-04-26 09:53:03 · 154 阅读 · 0 评论 -
CF1582C. Grandma Capa Knits a Scarf
题目链接一道贪心题由于字符集大小只有26,我们考虑枚举删除每一种字母 kkk 的情况首先,我们设 l,rl,rl,r 的值分别为 1,n1,n1,n,并依次考虑 l,rl,rl,r 位置字母的相同情况如果 l,rl,rl,r 位置字母相同,那么就把两个指针同时向字符串中心移动一位如果两位置字母不相同,并且两个字母都不同于 kkk。那么该字母 kkk 一定不是最终答案如果两位置字母不相同,且其中一个为 kkk,那么就删除该字母,并重复上面操作时间复杂度 O(26n)\mathcal{O}(2原创 2021-10-25 21:25:04 · 278 阅读 · 1 评论 -
CF1600E Array Game
CF题目链接洛谷链接一道不太正经的博弈论题,可用递归解决题意给出一个序列,Alice与 Bob 轮流从序列两端取数,并把取出的数按顺序组成一个序列,需要保持此序列严格递增,最后不能取数的人败,求先手是否有必胜策略定义序列 a,ba,ba,b 分别为原序列 www 的最长递增前缀和最长递减后缀,则第一个被取走的数为 aaa 或 bbb 的首元素首先,存在为空的序列,那么如果非空序列长度为奇数先手必胜,否则先手必败如果首元素较大的序列的长度为奇数,那么先手必胜。因为先手取了第一个数后,原创 2021-10-15 16:34:13 · 332 阅读 · 0 评论 -
Codeforces CF1516C Baby Ehab Partitions Again
题目大意给出一个长度为 nnn 的序列,问最少需要删除多少个元素,满足剩下的序列不能分为两个元素和相等的集合首先,我们用背包判断原序列是否已经满足要求如果不满足,那么我们将证明只需要删去一个元素就可以让原序列满足要求 :我们先考虑一个较为特殊的情况,也就是存在一个奇数的 aia_iai,那么我们只需要将这个奇数删去,这样剩下的元素和为奇数,就一定满足要求。如果在这种特殊情况之外,那么就一定存在一个最大的 kkk,满足 2k∣ai (1≤i≤n)2^k|a_i \space (1\le原创 2021-04-22 11:38:30 · 315 阅读 · 0 评论 -
Codeforces CF1516D Cut
题目大意给出一个长度为 nnn 的序列 aaa,以及 qqq 次询问每次询问给出 l,rl,rl,r,问最少需要把区间 [l,r][l,r][l,r] 划分成多少段,满足每段内元素的 LCM 等于元素的乘积这数据范围,这询问方式,一看就是DS题首先,我们考虑 LCM 的性质。如果一段区间内的数的 LCM 等于所有元素之积,那么这个区间中的数一定两两互质。我们设 nxtinxt_inxti 表示 iii 后面第一个与 aia_iai 互质的数的位置同时,记 fif_ifi 为以 iii 为原创 2021-04-22 10:20:08 · 549 阅读 · 2 评论 -
Codeforces CF1516B AGAGA XOOORRR
题目大意给出一个长度为 nnn 的序列,可以进行若干次操作,每次操作将某相邻两数变为他们的异或和(注意操作后序列长度减一)。求是否可以经过若干次操作,得到一个长度至少为 222 且所有元素相等的序列首先,我们考虑所有满足条件的目标序列之间的关系对于一个长度不小于 333 的所有元素相等的序列,设序列长度为 nnn,则该序列一定可以变换成一个长度为 n−2n-2n−2 的元素相等序列。我们称这两个序列是本质相同的那么,我们可以发现,在所有满足条件的目标序列中,最多只会有两个不等价的。并且他们的长度分原创 2021-04-22 09:36:42 · 346 阅读 · 0 评论 -
Codeforces CF1404B Tree Tag
题目链接题目大意有一棵 nnn 个节点的树,初始时 Alice 在 sss 点,Bob 在 ttt 点。他们将轮流在树上移动,每次 Alice 的移动距离不超过 dadada,Bob 不超过 dbdbdb,不可以不移动问如果 Alice 先开始移动,并且两人都按最优方案移动,Alice 是否能在 1010010^{100}10100 轮内追上 Bob题解首先,考虑两种特殊情况dis(s,t)≤da\operatorname{dis}(s,t) \le dadis(s,t)≤da:Alice原创 2021-04-13 16:37:34 · 153 阅读 · 0 评论 -
Codeforces CF1484B Restore Modulo 题解
题目链接题目大意给出一个序列 aaa,问是否能找到四个数 n,m,s,cn,m,s,cn,m,s,c,满足以下条件aaa 的长度为 nnna1=smod ma_1=s \mod ma1=smodmai=(ai−1+c)mod m ∣ (1<i≤n)a_i=(a_{i-1}+c) \mod m \space | \space (1 < i \le n)ai=(ai−1+c)modm ∣ (1<i≤n)0≤c<m0 \le原创 2021-03-22 15:47:39 · 496 阅读 · 4 评论 -
Codeforces CF1483C Skyline Photo 翻译
题目链接有 nnn 栋楼房,每栋楼有一个高度 aia_iai 和美丽值 bib_ibi现在,你需要把这 nnn 栋楼房划分成若干个连续段,每一个连续段的美丽值为该段中最矮的楼房的美丽值。总的划分美丽值为每个连续段的美丽值之和问最大可能的总划分美丽值是多少输入格式第一行一个整数 nnn,表示楼房数第二行 nnn 个整数,表示 a1…na_{1\dots n}a1…n第三行 nnn 个整数,表示 b1…nb_{1\dots n}b1…n输出格式输出一行一个整数,表示最大的总划分美丽值原创 2021-03-22 11:06:45 · 331 阅读 · 0 评论 -
Codeforces CF1483C Skyline Photo 题解
题目链接感觉这道题跟当晚的ARC E 撞了,虽然并不是完全一样。结果我ARC E和这道题都没有在赛时做出来/kk。这里记 ai,bia_i,b_iai,bi 为第 iii 个楼房的高度和美丽值。我们设 fif_ifi 为前 iii 栋房屋可以得到的最大美丽值,且 val(l,r)\operatorname{val}(l,r)val(l,r) 表示区间 [l,r][l,r][l,r] 内最矮的楼房的美丽值。那么显然我们可以得到一个 O(n2)\mathcal O(n^2)O(n2) 的转移:原创 2021-03-22 10:58:18 · 2875 阅读 · 7 评论 -
CF794C Naming Company 题解
题目链接题目大意A,B 两人各有一个长度为 nnn 的,由小写字母构成的字符串 s,ts,ts,t,还有一个长度为 nnn,初始时由 ? 组成的目标串 fff现在,A和B轮流进行如下操作:在自己的字符串中选出一个字符 xxx将 fff 中的一个 ? 替换为 xxx将 xxx 从自己的字符串中删去当 fff 中没有 ? 时游戏结束A 的目标是让 fff 的字典序尽量小,而 B 的目标是让字典序尽量大现在设 A 为先手,你需要求出游戏结束后的 fff注意:s,ts,ts,t 中可能有多个原创 2021-03-16 11:03:08 · 249 阅读 · 0 评论 -
CF1495A Diamond Miner 题解
题目链接翻译本题其实就是一个贪心首先我们把题意转化一下,变为:有 nnn 条横向边与 nnn 条纵向边,现在要将他们两两配对,满足组成的直角三角形的斜边和最小。方法 1我们先将这些边任意配对,并尝试将它修改地更优。那么,刚开始的配对情况可能长这样:我们尝试修改:如上图,根据三角形边长定理,显然红边长度和小于绿边长度和。那么我们就用红边来替代绿边。那么,对于每两条交叉的边,我们按如上方法对分配方案进行修改。最后,这些斜边肯定是两两不相交的。所以,我们只需要按边长排序,然后长边跟长边配,原创 2021-03-11 11:25:55 · 240 阅读 · 0 评论 -
CF1496B Max and Mex 翻译
题目链接给出一个长度大小为 nnn 的可重集合 SSS(集合内允许有),保证这 nnn 个数互不相同且非负。接下来,你需要将下面操作进行 kkk 次:将 ⌈a+b2⌉\lceil \frac{a+b}{2}\rceil⌈2a+b⌉ 加入集合(注意这里是可重集),其中 a=mex(S)a=\operatorname{mex}(S)a=mex(S), b=max(S)b=\max(S)b=max(S)。这里 mex(S)\operatorname{mex}(S)mex(S) 表示集合 SSS 中原创 2021-03-11 10:41:59 · 412 阅读 · 0 评论 -
CF1495A Diamond Miner 翻译
题目链接在一个平面直角坐标系上,有 nnn 个矮人与 nnn 个钻石。保证所有矮人都在 yyy 轴上,所有钻石都在 xxx 轴上,且没有东西在原点现在,每个矮人都需要去捡一个钻石。假设矮人和钻石的坐标分别为 (x,y),(u,v)(x,y),(u,v)(x,y),(u,v),那么这个矮人去捡这个钻石所花费的体力就是 (x−u)2+(y−v)2\sqrt{(x-u)^2+(y-v)^2}(x−u)2+(y−v)2(也就是两点间的距离)求一个钻石的分配方案,使得所有矮人花费的总体力最少,并输出这个最小值原创 2021-03-11 10:30:19 · 250 阅读 · 0 评论 -
CF1469B Red and Blue 翻译
题目大意给出一个长度为 nnn 的序列 aaa,和一个长度为 mmm 的序列 bbb现在你需要将两个序列合并,形成一个新的长度为 n+mn+mn+m 的序列 ccc,并保持原来组内的相对顺序。举个例子,假设 n=2,m=3n=2,m=3n=2,m=3:则 a1,b1,b2,a2,b3a_1,b_1,b_2,a_2,b_3a1,b1,b2,a2,b3 就是一个合法的新序列a1,b2,a2,b1,b3a_1,b_2,a_2,b_1,b_3a1,b2,a2,b1,b3 就不合法定义原创 2021-03-10 15:14:40 · 214 阅读 · 1 评论 -
CF1060E Sergey and Subway 题解
题目链接两百年前看题解做过的一道题,自己还写了个题解,现在回来感觉当时的做法极其不严谨。设 dis(i,j)\operatorname{dis}(i,j)dis(i,j) 表示 i,ji,ji,j 的距离。我们可以发现,对于每一个点对 (i,j)(i,j)(i,j):如果原来 dis(i,j)\operatorname{dis}(i,j)dis(i,j) 为偶数,那么加上新边后就变成了 dis(i,j)2\frac{\operatorname{dis}(i,j)}{2}2dis(i,j)。原创 2021-03-05 10:58:41 · 253 阅读 · 1 评论 -
CF1491B Minimal Cost 题解
原题链接洛谷链接本题分为三种情况:这 nnn 个障碍物没有组成一堵墙:也就是说如果 maxi=2n{∣ai−ai−1∣}>1\max\limits_{i=2}^n\{|a_i-a_{i-1}|\}>1i=2maxn{∣ai−ai−1∣}>1 那么则不需要花费任何费用,因为可以直接绕过障碍物这 nnn 个障碍物组成了一堵普通的墙:也就是maxi=2n{∣ai−ai−1∣}=1\max\limits_{i=2}^n\{|a_i-a_{i-1}|\}=1i=2maxn{∣原创 2021-03-01 15:26:59 · 340 阅读 · 1 评论 -
CF1491A K-th Largest Value 题解
原题链接洛谷链接题目大意给出一个长度为 nnn 的01序列,并执行 mmm 此操作。操作有如下两种将 axa_xax 取反(0变1,1变0)询问该序列中第 kkk 大的树刚看到题的时候以为是树状数组QwQ,其实并不需要在读入以及修改序列时,记录一下 111 的个数 tottottot每次修改的时候,如果 ax=0a_x=0ax=0 则让 tottottot 加一,否则让 tottottot 减一那么在询问时,如果 tot≥ktot \ge ktot≥k,则答案为 111,否则为原创 2021-03-01 15:13:57 · 241 阅读 · 2 评论 -
CF1491C Pekora and Trampoline 翻译
原题链接 洛谷链接有 nnn 个蹦床排成一列,每个蹦床有一个弹力值 sis_isi每一轮的最开始,Pekora 会选择一个蹦床作为她的起点(任意一个蹦床都可以作为起点)。当她在蹦床 iii 时,她会跳到蹦床 i+sii+s_ii+si 上,并且 sis_isi 会变为 max(1,si−1)max(1,s_i-1)max(1,si−1)(也就是说,蹦床每被跳一次弹力值就会减一,直到弹力值为 111)。当她跳到了第 nnn 个蹦床的后面时,该轮结束。现在,Pekora 想要把所有的 sis_i原创 2021-03-01 12:26:26 · 418 阅读 · 0 评论 -
CF1491C Pekora and Trampoline
原题链接 洛谷链接题意就不赘述了,等会去提交个翻译这题放 n2n^2n2 过就离谱考虑贪心,显然每轮最开始调到第一个 sis_isi 不为 111 的蹦床上是最优的,因为这样可以让后面的 sss 尽可能减少。定义 cic_ici 为位置 iii 已经被踩了多少次那么,我们贪心的从 111 开始枚举跳到的第一个蹦床,设当前枚举到第 iii 个蹦床由于最终这个蹦床的 sis_isi 会被踩到只剩 111,所以肯定会对区间 [i+2,min(i+si,n)][i+2,min(i+s_i,n)]原创 2021-03-01 12:10:36 · 2484 阅读 · 2 评论 -
CF208E Blood Cousins
题目链接题目大意给出一个 nnn 个点构成的森林,有 mmm 组询问每次询问一个点 xxx 与多少个点拥有共同的 kkk 级祖先题解我们稍微转化一下题意:设 yyy 为 xxx 的树上 kkk 级祖先,那么询问就变成了在 yyy 的子树中有多少个点与 yyy 的距离为 kkk。最后输出时需要减一首先,我们dfs求出每个点的深度然后,给每一个点 xxx 开一棵线段树,只需要支持单点修改和单点查询。位置 iii 记录 xxx 子树中深度为 iii 的点的出现次数最后询问时,直接查询 yyy 的原创 2020-11-18 11:48:56 · 172 阅读 · 0 评论 -
CF1335F Robots on a Grid 题解
题目链接看到很多题解都是写的 O(nm⋅lognm)\operatorname{O}(nm\cdot \log nm)O(nm⋅lognm) 的倍增,这里将一种 O(nm)O(nm)O(nm) 的做法首先,我们可以将给出的网格图转化为若干棵形如下图的内向基环树为了方便理解,我们将环上的节点从 000 开始依次编号。满足对于环上的每一条边 [x→y][x \rightarrow y][x→y],x+1=yx+1=yx+1=y接着,我们不妨让环上的点的编号沿着环上的有向边移动一次这样,对于所有原创 2020-07-09 16:15:40 · 240 阅读 · 0 评论 -
CF1344B Monopole Magnets 题解
题目链接首先我们考虑合法的地图需要满足的条件在任意一行或一列中,不存在两个不相邻的黑色方块 A,BA,BA,B。因为,根据题目中规则,每行每列上都至少有一个南极磁铁。所以不管这个南极磁铁在那里,都会有至少一个北极磁铁可以到达 A,BA,BA,B 之间的白方块上。例如,样例 222 就是不合法的对于一个方格 (x,y)(x,y)(x,y),只有当 (x,y)(x,y)(x,y) 为黑格,或者它所在行列(包括 (x,y)(x,y)(x,y))上没有黑格时,才能在 (x,y)(x,y)(x,y) 上放南极原创 2020-07-07 11:15:35 · 1084 阅读 · 0 评论 -
CF1369D TediousLee 题解(树形DP+递推)
题目链接个人认为是一道非常有意思的题,题意就不赘述了首先,要发现这题的做法,必须要先打表找规律。可以自己在纸上用手捏出 n≤6n\le 6n≤6 的数据经过打表后,我们可以发现下面这个规律:图稍微有点丑,见谅...原创 2020-06-29 12:08:12 · 7509 阅读 · 0 评论 -
CF1369D TediousLee 翻译
首先,我们定义 RDB 为一棵具有特殊性质的树,它有一个级别 levellevellevel定义一个级别为 111 的 RDB 为一个节点。接着,对于所有 i>1i>1i>1,级别为 iii 的 RDB 的构成方法如下先求出级别为 i−1i-1i−1 的 RDB,然后对于该 RDB 中的每个节点 xxx如果 xxx 没有孩子,那么给他加上一个孩子如果 xxx 只有一个,那么给他加上两个孩子如果 xxx 已经有了超过一个孩子,那么我们跳过节点 xxx以下是 1≤n≤31\l翻译 2020-06-29 11:41:02 · 7673 阅读 · 0 评论 -
CF1370C Number Game (博弈论+数论)
题目解题思路最开始,我们可以把 nnn 分成三种情况当 n=1n=1n=1,后手赢当 nnn 为奇数,先手赢,nnn 直接除以自身就可以了前两种情况都比较简单,下面来讨论当 nnn 为偶数的情况当 nnn 为偶数(222 的倍数),想赢的话肯定不能使用减 111 的操作,因为这样后手必胜。那么就考虑除以约数由于 nnn 为偶数,我们一定可以将 nnn 分解成一些质数与 222 的正整数次幂之积 n=p1×p2×⋯×pm×2kn=p_1 \times p_2 \times \cdots \t原创 2020-06-28 10:32:44 · 281 阅读 · 0 评论 -
CF1096D Easy Problem 题解
题目链接我们设 f[i][j]f[i][j]f[i][j] 为让原字符串满足最多包含 hard\texttt{hard}hard 的前 jjj 个字符,所需要的最小修改代价特别的,f[i][0]f[i][0]f[i][0] 表示不包含 hhh 的最小修改代价考虑转移方程,有两种情况当 s[i]≠c[j+1]s[i] \ne c[j+1]s[i]=c[j+1] 时(ccc 是预先处理好的 hard\texttt{hard}hard),加上第 iii 个字符后不会增加最大匹配的长度,所以 f[i][原创 2020-05-27 09:53:26 · 247 阅读 · 0 评论 -
Codeforce 1344A Hilbert s Hotel 题解
题目链接题目大意有一条数轴,在它的每个整数位置上有一个人现在对于所有整数 kkk,位置 kkk 上的人会移动到位置 k+akmod nk+a_{k \mod n}k+akmodn问在所有人移动一次后,是否每个位置上都恰好有一个人解题思路我们可以把这题当成图论来做对于每一个人的移动操作,我们把它视为一条有向边 [k,k+akmod n][k,k+a_{k \mod n}][k,k+akmodn]注意,我么需要把每条边的起点与终点 mod n\mod nmodn,使得 aaa 中的每一原创 2020-05-15 11:48:02 · 255 阅读 · 0 评论 -
CF1350B Orac and Models 题解 DP + 枚举因数
题目链接这题的本质就是一个最长上升子序列,只不过多加了一个限制对于求LIS,分别有 O(n2)\operatorname{O}(n^2)O(n2) 和 O(nlogn)\operatorname{O}(n \log n)O(nlogn) 两种方法。这题的做法类似第一种设 f[i]f[i]f[i] 为以 iii 结尾的最长美丽子序列的长度对于每个 2≤i≤n2 \le i \le n2≤i≤n,考虑从 jjj 转移过来。我们发现它们一定满足 j∣ij \mid ij∣i,那么我们可以用 O(n原创 2020-05-13 10:37:02 · 342 阅读 · 0 评论 -
Codeforces 1350A Orac and Factors 题解
题目链接一道数论水题此题分两种情况当 nnn 为偶数时,显然 f(n)=2f(n)=2f(n)=2。在加上 f(n)f(n)f(n) 后,nnn 还是偶数且 f(n)=2f(n)=2f(n)=2。那么进行 kkk 次操作后,得到的答案就是 n+(2×k)n+(2\times k)n+(2×k)当 nnn 为奇数时,f(n)f(n)f(n) 必然是一个奇数。因为 2∤n2 \nmid n2∤n,所以任何偶数都不是 nnn 的因数。那么进行了一次操作后,nnn 又变成了偶数,我们就直接重复操作1就可以原创 2020-05-13 10:10:22 · 185 阅读 · 0 评论 -
Codeforces 446A DZY Loves Sequences 题解
题目一道思维题,代码很简单,重在思路设 lil_ili 为以元素 iii 结尾的最长连续上升子序列的长度rir_iri 为以元素 iii 开头的最长连续上升子序列的长度最后,ansansans 由三个东西转移过来:ans=max{maxi=2n−1li−1+1+ri+1,maxi=2n−1li−1+1,maxi=2n−1ri+1+1}ans = max\{ \max\limits...原创 2020-04-20 10:47:27 · 164 阅读 · 0 评论