
CodeForces
清泠,
慢慢成长的小白白,
展开
-
Codeforces Beta Round #73(Div2)
这套CF练习题感觉有点迷,坑好多传送门A - Chord思路:给予C 、C#、D、D#、E、F、F#、G、G#、A、B、H,这12个符号,题目给予3个符号,如果相隔 4 3,那么就输出“major”,如果相隔3 4,就输出“minor”,否则就输出“strange”。排着循环遍历即可,判断他们之间的距离(mp存一下),然后判断输出即可。代码:#include <iostream>#include <cstdio>#include <cstring>.原创 2020-12-06 17:58:02 · 229 阅读 · 0 评论 -
Codeforces Round #651 (Div. 2)
这里写下ABCDE吧,这次思路感觉不是怎么很明确传送门A. Maximum GCD主要思路:n/2即可解题思路:由于让求1 <= x < y <= n, 求 max(gcd(x,y)), 那么如果x = k, 那么最大情况, y = 2k, 这样他们的最大公约数就为k因此最大值就是n / 2(倍数关系,二倍是最小的)代码:#include <iostream>#include <cstdio>#include <cstring.原创 2020-06-23 11:36:25 · 393 阅读 · 3 评论 -
Codeforces Round #649 (Div. 2)
手速思路还是太慢了,放假后要抓紧练习才行传送门A. XXXXX主要思路: 首先求出全部的和是否是x的倍数,如果不是,则输出n, 如果是,那么找前后第一个余数不为0的点即可。解题思路:首先我们对所有数求和,如果不是x的倍数,那么直接输出n然后我们判断是x的倍数的情况,那么我们只要前后找一个位置,这个位置他不是x的倍数即可,然后我们求这个长度的最大值。代码:#include <iostream>#include <cstdio>#include <c.原创 2020-06-14 22:25:33 · 265 阅读 · 0 评论 -
Educational Codeforces Round 89 (Rated for Div. 2)
这次比赛的题目挺好,又是无限wa,这里写下ABCD的题解传送门A. Shovels and Swords主要思路: 找相同的时候,然后 /3 * 2 找最大值解题思路:首先我们分情况讨论,最简单的情况就是相同,那么当 a , b 都选出3个的时候,能组成2个,这个是最多的情况,我们还要判断是否是否留了2个,如果留了2个,那么还可以制造一个。然后我们之间考虑a > b这种情况(换一下即可)。首先我们看他们之间的差值 x = a - b, 如果 b < x,那么 res =.原创 2020-06-12 21:44:15 · 226 阅读 · 0 评论 -
Codeforces Round #648 (Div. 2)
这次状态不好,总是wa题,心态都有点炸了,这里写下CDEF(F有时间就写上)传送门C. Rotation Matching主要思路: 主要是看两个相同的值的差距距离,然后计算差距距离最多的数值是多少即可解题思路:这题还是比较简单的思维题首先我们可以想到我们计算两个数组相同值差的距离,这里我们用: 第一个数组的值的位置 - 第二个数组值的位置 + n % n 即可,表达式:(res是记录的差值为x时的个数)scanf("%d",&b[i]);int x = (aa[b[i.原创 2020-06-09 00:51:43 · 324 阅读 · 0 评论 -
Codeforces Round #647 (Div. 2) - Thanks, Algo Muse!
这里就补下BCD吧,这次打思路太慢了传送门B. Johnny and His Hobbies主要思路: 首先看到是1 — 1024,那么直接枚举1 — 2048 ,看看是否符合条件即可(是否和原来的一样)解题思路:首先枚举1 — 2048 这些数,然后直接与输入的值进行 ^ 异或操作,然后判断这个值是否在原本输入数据中,并且看是否有重复的主要是处理初始化,也没什么难的,暴力就ok代码:#include <iostream>#include <cstdio&g.原创 2020-06-05 19:07:49 · 326 阅读 · 1 评论 -
Codeforces Round #646 (Div. 2)
这次CF有事没打,后期补了ABCE传送门A. Odd Selection总思路: 循环找出奇数个奇数,判断是否存在符合的情况解题思路:首先要求 x 个数,他们的数之和为奇数这个题有O(1) 做法,不过相对麻烦些,这里写一下稍微思维简单些的O(n)做法首先输入,我们求出 有 a 个奇数, b 个偶数给予的 x 的个数,我们肯定会选出奇数个奇数,剩下的选偶数就可以,所以我们根据这个规律直接循环。for (int i = 1; i <= x; i += 2){ i.原创 2020-06-01 23:29:57 · 419 阅读 · 0 评论 -
Codeforces Round #635 (Div. 2)
这里单纯写下C题的题解,后期有时间写下别的题传送门C.Linova and Kingdom设计知识点:dfs、思维、贪心解题思路:根据题意我们了解掉,我们尽量选距离根节点1较远的点作为工厂,肯定会考虑到每个点距根节点的距离,这里利用dfs来搜索进行存储,然后我们如何选择点成为了关键这里我们想一下,如果当前点作为工厂,那么他的贡献度为 : 当前点的深度 - 前面的黑色的点(就是工厂)那么我们转换一下,我们的贪心思想是 当前点的深度 - 其子节点的数目 (deep - size.原创 2020-05-28 18:19:29 · 210 阅读 · 0 评论 -
Codeforces Round #645 (Div. 2)
这次DIV2 有点难搞,这里补一下CD题,感觉自己做难题的速度还是不太行传送门C题解题思路:首先C题可以自己先瞎推推,首先要写一下,不能盲目的猜,因为路径和里有相同的数(自己举例一下就好)然后其中可以满足的数目其实就是路途上的数的和的 最大值 - 最小值 + 1, 这个应该好理解吧。然后我们求最大值最小值的差值即可,最大值是先向下走,再向右走,最小值是先向右走,再向下走(这个规律还是比较容易发现的),如果想单纯的直接累加求肯定是爆掉的,然后找他们之间的规律。首先我们看下图,图.原创 2020-05-27 23:04:24 · 268 阅读 · 0 评论 -
Codeforces Round #617 (Div. 3) --- E2
通过做这道题学到了很多知识,还是很好的,用到Dilworth定理题目传送门Dilworth定理解题思路:就是给你一堆字母,ababcdba,最终让你排成aaabbbcd(字典序最小)如果2个位置的字母涂的颜色不同,那么他们可以交换,问的是用最少的颜色进行涂色,我们最少需要多少种颜色, 而且将他们的位置的颜色标记出来。这里用到Dilworth定理:不上升子序列的数目 == 最长下降子序列的长度 (反之亦然,如果想看正面的点上面的链接即可)这个题简单的来说是找有多少个不下降子序列,也就是能划.原创 2020-05-27 10:56:57 · 204 阅读 · 0 评论 -
Codeforces Round #636 (Div. 3)
这套div3还可以,比较简单吧,D题感觉比较不错,这里补一下D题传送门D题解题思路:D题原本还想用二分三分去做,但是感觉不太靠谱,hhh差分的思想,其实还好首先我们这里需要列出几种情况,他们的和为x + yx=ai x = a_i x=ai y=an−i+1 y = a_{n - i + 1}y=an−i+1首先是保持不变,那么他们的和仍然为x + y, 操作的数目是0增大其中一个数,如果我们想操作一次让他最大,那么我们需要操作x,y中较小的那个数,所以我们可以操作一次达.原创 2020-05-24 10:16:53 · 181 阅读 · 0 评论 -
Codeforces Round #643 (Div. 2)
最近CodeForces比赛有点多,有点刺激,这次A了三题,不过思路太慢了,而且理解题意整的不好传送门A题 : 自己没耐心写下去,结果好久好久才过,下次遇到这种题一定记得解题思路:主要是暴力,给你一个值就第 k 项的值根据这个式子往后计算就可以,因为每次加的数 1 ~ 81 ,所以百位不是+ 0 就是 + 1,所以最多1000次,他就为将改为变为0,如果存在0,那么他的值肯定就不会变换了,就是这样!代码:#include <iostream>#include &l.原创 2020-05-17 22:35:51 · 223 阅读 · 0 评论 -
Codeforces Round #642 (Div. 3)
22分钟A了前三天,然后…然后就没然后了,这里补下DE题传送门D题解题思路:这个题开始就是找规律…找…正解是set或者优先队列,这里用优先队列写下首先我们是从哪个区间大我们就往哪个区间的中间位置放数,所以我们就存储他的头和尾的坐标,一开始肯定是1,n我们这里对优先队列排序,按照长度由长到短,如果长度相同那么看坐标小就排在前面(这里学了下优先队列的排序,与sort是反的)struct cmp{ bool operator()(PII x, PII y){ if (.原创 2020-05-16 00:03:37 · 195 阅读 · 0 评论 -
Codeforces Round #641 (Div. 2)
这里补BCD题,这次还是太菜了,只a了2题,D还理解错了,c是一点不会传送门B题B题wa了三发好惨,这个时间比较宽裕,所以有很多办法,最终基本都是DP原本想的是把每一个数分解,求出他的因子,然后对因子进行操作或者直接DP,直接对当前数值的倍数进行操作这里比较坑的是让dist[i] = 1,原本只对1进行了赋初值,然后想到一个样子a[1] = 10, a[2] = 1, a[3] =2, a[4] =3,这里是输出 2,因为2,4符合,但是如果不都赋初值1,那么输出的只是1,所以这个地方挺.原创 2020-05-13 20:27:31 · 340 阅读 · 0 评论 -
Codeforces Round #639 (Div. 2)
这里补一下CD题,B题看错题浪费好多时间,太菜了比赛链接C题解题思路C题阅读理解,很迷很迷很迷…好不容易才理解好,对于这个无限的房间,我们将n作为一个周期,因为a的下标是k%n,所以我们0 ~ n-1 作为一个周期,这里可以想一下第一个周期里的 k + ai ,第二个周期k + n + ai (因为a的下标对n取模,所以是一样的),这里可以看成,第一个周期的占了下一个周期的第二个位置,然后下一个周期占据下下个周期的第二个位置… 循环完后,每个周期的第二个位置其实都被占据了(这里的第二个位置.原创 2020-05-12 11:05:56 · 199 阅读 · 0 评论 -
Codeforces Round #501 (Div. 3)
这次补个D题吧,E1,E2 回头再看比赛链接D题解题思路:这个题首先要注意两点第一,如果是(n - 1) * k < s,那么不能够完成,因为(n - 1)* k 是走的最大的步数第二, 如果 s < k,那么也不符合,因为每次走一步的话也肯定会超过s,所以不符合然后其余的情况都是YES根据贪心的思想,我们肯定是一开始走比较大的距离,后面剩的距离我们慢慢走完这里是...原创 2020-05-08 11:18:33 · 196 阅读 · 0 评论 -
Codeforces Round #498 (Div. 3)
先写B和D的题解,E题的后期补一下比赛链接B题解题思路:看到要分块,那么肯定是贪心了所以我们首先让res 与 ans 数组相同(初始状态),然后将ans数组从大到小排序,取前 k 位,然后遍历数组res,找出对应位置的下标这里找下标需要注意,如果值相同,那么我们找的下标肯定是不同的,这里需要注意一下然后我们记录好下表的位置存入kun数组中,然后从小到大排序,因为最后是包含全部的,...原创 2020-05-06 13:33:51 · 210 阅读 · 0 评论 -
CodeForces - 246
题目链接这次个人赛的C和D直接给我干懵了,C的话是自己的逻辑混乱了,D是自己写的时候又忘记了以前犯的错误了C题解题思路C题直接枚举,不过有一定的技巧与思维首先我们想,他一般情况下是先枚举一个数字的,然后2个…那么这里有个坑就是,如果有 1 2 3 ,那么我们先枚举完3了,然后再枚举 1 2,那么他的和相同了,肯定是不行的,所以我们这里想从大到小枚举还有一种方法就是,我们保证一些数...原创 2020-04-21 16:35:19 · 207 阅读 · 0 评论 -
Codeforces Round #627 (Div. 3)
比赛链接 A题 解题思路: A题还是很水的,只要看他们的奇偶性是否相同即可。因为如果一个奇数一个偶数,无论如何他们都不会消除的。 代码: #include <iostream>#include <cstdio> using namespace std; const int N = 110; int a[N]; int main()...原创 2020-03-18 20:46:03 · 105 阅读 · 0 评论 -
Codeforces Round #624 (Div. 3)
比赛链接 A题 解题思路:简单的数学思维题:1. 如果相同 a , b 相同,那么输出 0 2. 如果 b > a ,如果相差偶数,那么我们加 2次奇数即可,如果相差奇数,那么我们直接加一次奇数。3. 如果 a > b,那么相反。 代码:#include <iostream>#include <cstring>#in...原创 2020-02-28 16:05:26 · 163 阅读 · 0 评论 -
Codeforces Round #481 (Div. 3)
比赛链接 A题 解题思路:从后往前找,如果没有出现过,则存入,否则删除(当前的值变为 0)。最后遍历输出即可。 代码:#include <set>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm> ...原创 2020-02-22 20:26:56 · 142 阅读 · 0 评论 -
Codeforces Round #480 (Div. 2) ABC
比赛链接 A题 解题思路:本题要求在每两个珠子之间存在相同数目的链,只要判断 链条的数目 % 珠子的数目 是否为 0即可,但是要注意细节,当没有珠子或者没有链条的话,也是可以的 。 代码:#include <iostream>#include <cstdio>#include <cstring>using namespace...原创 2020-02-21 18:58:35 · 166 阅读 · 0 评论 -
Codeforces Round #479 (Div. 3) ABC
比赛链接 A题 解题思路:A题,暴力做就行,k也就 50,如果 % 10 == 0 就除,如果 = 0 ,就减,最后输出即可。 代码:#include <map>#include <cmath>#include <cstdio>#include <cstring>#include <iostream>...原创 2020-02-15 18:02:22 · 131 阅读 · 0 评论 -
Codeforces Round #478 (Div. 2) ABC
比赛链接 A题 解题思路:给予 n 个字符串,让求有多少个不同的词根(set存储)。首先我们将每个都set去重,然后使用map数组存储当前词根,然后最后进行统计。 代码:#include <map>#include <cmath>#include <cstdio>#include <cstring>#incl...原创 2020-02-15 17:09:16 · 143 阅读 · 0 评论 -
Codeforces Round #476 (Div. 2)
题目链接 A题 解题思路:给出k , n, s, p 。 n 个人,k个人,一个人需要 s 个纸飞机 ,一包纸里有 p 张纸,而且纸不能共享,求需要几包纸。s 和 p ,求出一个人需要几张纸,然后 * k ,最后再 / p 然后最后需要多少包纸。 代码:#include <cmath>#include <cstdio>#include ...原创 2020-02-14 11:42:28 · 134 阅读 · 0 评论 -
Educational Codeforces Round 43 (Rated for Div. 2)
比赛链接 A题 解题思路:给予n个数字,让你求出最小的。(思维)01 可以互换位置,11可以删除,所以我们就将1都换到前面,然后两个两个减去就好,最后只剩下一个。 代码:#include <cmath>#include <cstdio>#include <cstring>#include <iostream>...原创 2020-02-14 11:41:04 · 93 阅读 · 0 评论 -
Codeforces Round #469 (Div. 2) BC
题目链接 B题 解题思路:给与n , m 让我们求出这两组中能组成多少相同的电报,比如样例中所说:因此我们从头到尾遍历即可,然后最后时候需要判断是否需要 + 1,因为存在特殊的情况,一种包括n , m 都是 1 另一种包含不都是 1 那么肯定最后需要 + 1,因为没判断完全,而且两个信息段肯定是完全相同的(只是被拆散成一些部分) 代码:#include <...原创 2020-02-09 12:24:07 · 151 阅读 · 0 评论 -
Educational Codeforces Round 39 (Rated for Div. 2) BC
题目链接 B题 解题思路:给予a , b 然后执行以下操作:这个需要注意的是数据范围以及如何处理超时。代码中给出注释。 代码:#include <cmath>#include <cstdio>#include <cstring>#include <iostream>using namespace std;...原创 2020-02-09 11:24:44 · 148 阅读 · 0 评论 -
Codeforces Round #466 (Div. 2) ABCD
题目链接 A题 解题思路:输入 n ,d 求数组中,删除多少数后剩下的数组中的最大值与最小值的差值 <= d。求删除的最小数目。一开始想到双指针,结果真的是想多了(该暴力的时候不暴力) ,n 的大小不超过200 ,n^2 暴力就OK,记得提前排下序,找到符合的最大长度,最后用 n - 最大长度即可。 代码:#include <cmath>#in...原创 2020-02-08 23:28:47 · 131 阅读 · 0 评论 -
Codeforces Round #465 (Div. 2) BC
题目链接 B题 解题思路:给予一个 n ,然后给予字符串,长度为n,然后字符串中包含 U 和 R, U代表向上走,R 的代表向右走,当穿过一次y = x 就要进行一次交费,问缴了多少次。(穿过是要穿过去,在y = x 上待着不算穿过,初始时按照最明智的方案)因此我们只需判断当前是否在y = x的线上,因此就是 x和y的值是否相同,如果相同,那么判断当前的方向是否和下次的方向相同...原创 2020-02-08 22:41:12 · 138 阅读 · 0 评论 -
Codeforces Round #467 (Div. 2) BC
题目链接 B题 解题思路:输入 p , y , 然后求 p + 1 — y的范围内,不是 1 — p 的倍数的最大数。不是1 — p 的倍数,我们利用求素数的方法对其求值(sqrt),由于规律:1e9中相邻素数的差值不超过300(看大佬写的,有兴趣的朋友可以查下),因此可以进行暴力循环,从y 一直到 p + 1,处理好判断条件即可。 代码:#include ...原创 2020-02-08 21:54:57 · 150 阅读 · 0 评论