
思维
清泠,
慢慢成长的小白白,
展开
-
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 #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 #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 评论 -
每日一题 — 2020 - 05 - 07
今天的每日一题也挺好的,也是我不会的,增加了知识hhh首先看这个稍微简单一些的D题题目链接解题思路:这题一开始想复杂了,忘记了1可以随便切换所以任何都可以和1进行切换,慢慢换肯定能换完所以都是Yes然后看一下升级版的E题题目链接解题思路:这个题只能相邻之间的进行切换,当然还是不用管1,1和任何数gcd都是1,所以可以随便切换然后我们想如果前面有个数,比现在这个数大...原创 2020-05-07 12:28:33 · 180 阅读 · 0 评论 -
每日一题 — 2020 - 05 - 06
今天的每日一题确实有点坑,可能评测姬炸了,不过又学到最短路了题目链接推理过程:这个题有点小思维,其实也没啥,就是从起始点到每个点的距离,用白天的费用算一遍,然后用终止点到每个点的距离的费用,用黑夜的费用算一遍然后由于有个限制条件,所以我们找最小值的时候应该从后往前找。交了差不多30发,不过学到了unordered_map 以后查询就用他了代码:#include <que...原创 2020-05-06 21:35:49 · 212 阅读 · 0 评论 -
Codeforces Round #498 (Div. 3)
先写B和D的题解,E题的后期补一下比赛链接B题解题思路:看到要分块,那么肯定是贪心了所以我们首先让res 与 ans 数组相同(初始状态),然后将ans数组从大到小排序,取前 k 位,然后遍历数组res,找出对应位置的下标这里找下标需要注意,如果值相同,那么我们找的下标肯定是不同的,这里需要注意一下然后我们记录好下表的位置存入kun数组中,然后从小到大排序,因为最后是包含全部的,...原创 2020-05-06 13:33:51 · 210 阅读 · 0 评论 -
每日一题 — 2020 - 05 - 05
最近不是dp题了,感觉好了很多,今天的题也是思维暴力,但是想不太到题目链接推理过程:这个题看题解的,自己不会做,因为不太明白怎么做这个题首先可以想到规律,如果是100 这种的三位数,如果要全部存在那么就是3 * 999 ,那肯定是超出1000位了,所以从这里入手经过测试,这个题的话最多到200就可以测出,200 * 3 多,数据水一些,不过也还可以,保险起见,直接写1000当然也可...原创 2020-05-05 23:32:34 · 240 阅读 · 0 评论 -
每日一题 — 2020 - 05 - 04
昨天忙着整别的事情,看了每日一题,但是没写博客整理,所以今天整理一下,题目挺不错的,不怎么会,不过是思维暴力(带点技巧)题目链接推理过程:三角形题目,问题要求删去一个值,剩下的能组成的周长最大的三角形。这里三角形的问题用贪心的思想我也是第一次遇到,从大到小排序,3个连在一起,第一个符合的就是最大的,也可以证明(自己写下就明白了)所以我们按照这个规律来解这个题,我们之间暴力循环搜索,...原创 2020-05-05 23:27:02 · 229 阅读 · 0 评论 -
每日一题 — 2020 - 05 - 03
题目链接数学水题吧,就是胆大就OK,其实就是思维一点吧解题思路:首先拿到这个题就直接猜0,1就OK,我也不知道为什么,猜就OK(一些推理吧)然后我们先讨论第一种情况,就是k这个数之前有没有能直接取模等于0的,如果等于0那么肯定是2然后我们判断,k * 2 > n 是否成立,(这里的k,n都要+1,因为题目说的很清楚,小心)因为如果gcd不是 1 ,那么最低也是2倍的关系。最...原创 2020-05-03 10:29:15 · 169 阅读 · 0 评论 -
每日一题 — 2020 - 05 - 02
题目链接表示又不会,又学到知识了,最近又越来越菜了思路推理:首先是贪心思维题吧,首先主要把题目意思理解清楚首先分为 3 种情况,首先需要排序首先第一种,我们要分成 k 组,那么我们就找前k个字母,这里我们将他存入set里,如果他的数目 >= 2,那么我们输出 弟k - 1就OK,这是k = 2的情况,其他的也符合,多想一下然后是第二种情况,第二种情况,就是前面的值都相同,...原创 2020-05-02 21:10:27 · 208 阅读 · 0 评论 -
每日一题 — 2020 - 05 - 01
题目链接打表找规律题,感觉还是不错的,又涨知识了推理过程:这里我们需要知道0! 是 1,那么就OK了这个题首先需要知道规律(这里还是白嫖师哥的一波)代码:#include <iostream>using namespace std;int main(){ int n, mod; scanf("%d%d",&n,&mod); if (n...原创 2020-05-01 11:20:22 · 263 阅读 · 0 评论 -
每日一题 — 2020 - 04 - 29
题目链接思维题,主要是找规律,最近不知道怎么回事,感觉做题不耐烦,总是不愿意去想思路推理:拿到这个题,看到0变成01, 1变成10,一开始知道是有一些规律,但是没找出来一开始还想着有什么算法?还是练的太少了这个题正常的思路是上下连接推理:(看师哥写的)所以,直接按照这个写就OK了代码很简单,就是想没想到(很喜欢这样的题,但是感觉这个题自己应该能做出来)...原创 2020-04-29 19:18:32 · 158 阅读 · 0 评论 -
每日一题 — 2020 - 04 - 27
题目链接应该是昨天的题,今天都28号了才发,昨天确实有点写不完,所以今天发好了,这个题是数学 + 思维,主要感觉以后写题解不能光写解题思路了推理过程:(新加的试试)首先这题让求一个数 x,他对a, b取模后(顺序不同),得到不同的数,问一个区间里有多少个问到区间里有多少个,我们首先先想到的是前缀和那种表达方式(一开始没想到,可能做的太少了),然后只要我们能表示成前缀和的形式就OK,主...原创 2020-04-28 12:09:56 · 239 阅读 · 0 评论 -
每日一题 — 2020 - 04 - 25
题目链接这个题感觉以前做过类似的,不过忘记了,优先队列真是没想到,又学习到新知识了解题思路:这个题感觉主要是思维吧,主要是怎么处理这个最小值首先想个简单了,只有一个数组,我们选出k个,选出最小值的最大那么我们从大到小排序,那么第k个就是最小值中最大的然后如果有2个数组,我们怎么处理(结构体)首先第一个我们还是那么处理,不过到k的时候我们就会取值,然后我们删除前面一个值,那么当前...原创 2020-04-25 16:43:45 · 235 阅读 · 0 评论 -
每日一题(牛客)— 2020 - 04 - 22
题目链接二分答案,一脸懵逼,感觉大佬都太强了,自己都想不到,看了大佬们的代码,学习了一下思想和知识点(二分没错,今天又进新坑)解题思路:首先这个二分就很不好想(对于自己),这个二分,他求的是对于一个数 x, 有多少个符合条件满足的,如果满足的个数 res >= m, 那么这个 x 肯定是选取小了,否则就是选取大了。然后我们如何去控制他的左右边界,这里看大佬的代码学到个技巧,让他...原创 2020-04-23 11:57:04 · 194 阅读 · 0 评论 -
每日一题 — 2020 - 04 - 16
题目链接实话实说一开始把这题稍微想的麻烦了一些,因为太像以前做过的题了,hhh(菜是原罪)解题思路:很简单,想三个位置不一样,想有多少种,那么直接Cn3就OK了,然后注意取模代码:#include <iostream>#include <cstdio>using namespace std;const int Mod = 1e9 + 7;l...原创 2020-04-16 16:57:23 · 115 阅读 · 0 评论 -
每日一题 — 2020 - 04 - 15
题目链接 这题也是一种思维吧(可能最近老了,思维不好),不过还可以 解题思路:首先我们思考,如何让他们的距离为偶数呢,那么如果距离一个点的距离是偶数,那么距离为偶数的点的距离都是偶数如果都是奇数,那么他们的距离也是偶数。所以我们要求出他们的点的距离,距离就随便选一个点为标准就行,然后对于偶数和奇数点,我们都Cn2就ok记得开long long代码:#include <...原创 2020-04-15 20:01:38 · 105 阅读 · 0 评论 -
每日一题 — 2020 - 04 - 14
题目链接 思维,其实也是前缀和的相关知识,就是到相对应的位置减上次保留的位置解题思路:首先我们分为3种情况,NLK,当为N时,我们x, y 都加1(x, y 分别代表LK),然后遇到相应的就–,最后我们判断当前的个数与之前个数,取最大距离值即可代码:#include <map>#include <cstdio>#include <cstring...原创 2020-04-14 21:24:11 · 139 阅读 · 0 评论 -
每日一题 — 2020 - 04 - 13
题目链接 思维题,就是记录一遍前面的记录一遍后面的,然后选取当前点时,不选当前的点,而选取他左右的最大值即可。解题思路:记录当前点前面的值,b[i],取a[i] 和mx + a [i] 的较大值即可,然后mx 改成他俩当中的较大值后面往前遍历也是如此,最终遍历取最大值即可学到知识:max({a,b,c}) 可以取最大值,库是algorithm (C++11 ) 新特性...原创 2020-04-13 18:24:48 · 129 阅读 · 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 评论 -
Codeforces Round #461 (Div. 2) BCD
题目链接 B题 解题思路:给予一个 n ,求三个数a ,b ,c , 范围 1 <= a <= b <=c <= n,要求 a , b ,c能组成三角形,并且 a ^ b ^ c == 0,求符合要去的个数。循环查找 a , b 然后求出 c , c = a ^ b,然后判断 c 是否符合要求。 代码:#include <iostre...原创 2020-02-03 18:04:55 · 139 阅读 · 0 评论 -
Convenient For Everybody CodeForces - 939C
题目链接 解题思路:给予 n 个时区, 然后在第一区间确定一个当地时间,让标准时间段s —— f 中可以参加比赛的人数最多。(标准时间是统一的按照第一时区来进行规定,当第一时区的时间是1时,第二时区为2 ····· )在比赛时为 00:00 时,无法参加比赛,因此比赛时区的范围是 s <= h < f首先我们读入n个时区参加比赛的人数,然后设置成第一个时区的标准时间...原创 2020-02-03 16:51:08 · 236 阅读 · 0 评论 -
Y2K Accounting Bug POJ - 2586
题目链接题目大意:给予 s,d ,s 是盈利,d是亏损,一年12月中,每连续5个月都是亏损的,问盈利的最大数额是多少,没有盈利则输出Deficit。解题思路:(刚开始比较懵,想怎么都是亏损的,最后想明白了)连续5个月亏损,先用0表示亏损,1表示盈利。111101111011 如果 连续5个月中 4* s <= d 那么就是这种情况,一定把盈利放在前面,这样可以达到最大盈利(可以...原创 2020-01-22 12:23:10 · 124 阅读 · 0 评论 -
Moving Tables POJ - 1083(空间)
题目链接题目大意:移动桌子,每个桌子移动的时间为10分钟,只要房号所在区间不相互影响,则可以同时移动,求所需最短的时间。解题思路:顺序大小不确定,将小的放在前面。.给予房间号,但是房间所占有的连廊区间是成对的。(1,2房间占用的就为区间1)因此房间所属的区间为[ l+1 >>1 , r+1>>1 ]。因此只要求区间中经过次数最多的地点,就是所需要的最大次数。...原创 2020-01-21 23:17:46 · 130 阅读 · 0 评论 -
Ancient Cipher POJ - 2159
题目链接题目大意:给2个字符串,求是否为经过加密的密码。(后面是字符串是否为前面字符串的加密结果)解题思路:加密过程只有两种:全部字符进行平移将字符的位置进行替换因此:只要判断字符的数量与之前的数量是否相符就行(相符不要求相应的字母相同,而是要求个数相同就行)eg:原本有A 2个,B 2 个, C 1个加密后 D 2个 E 2个,F 1个。(数量相对应)#inc...原创 2020-01-21 21:29:01 · 152 阅读 · 0 评论 -
Disk Scheduling —— 牛客网
题目链接:链接题目大意:输入n, m,在n个数中,找到 与 m 最近的数相减,再以被减数为基础,继续进行上述操作 。求最终差的和。(距离相同先与左边的相减)解题思路:首先输入,进行排序,然后找到m的相对位置,然后对m左右数值进行差运算比较大小,如果 ‘左’ > 右,变换右,反之,变换左。依次类推,最终找出差的和。代码:#include <iostream>#i...原创 2019-12-07 23:37:12 · 778 阅读 · 0 评论 -
CodeForces - 918C The Monster(思维)
题目链接:链接题目大意:给一个括号和问号组成的序列,问号可以视为左括号或右括号。问共有多少个合法(左右括号匹配的区间数(不是方案数)。解题思路:从左到右记录左括号,右括号,问号的数量,先把问号看作右括号,如果左括号加问号都小于右括号,就退出;如果不退出,但是左右括号数量不相等,并且存在问号,就把问号转成左括号;代码:#include <iostream>#includ...原创 2019-12-04 10:38:08 · 155 阅读 · 0 评论 -
Hashing Trees CodeForces - 902C
题目链接: 题目链接题目大意:给出一颗n层的树。以及从第0层开始给出每层的节点个数。求是否存在同构,若存在输出“ambiguous”和 2 个可以同构的树,如果不可以输出“perfect”。思路:判断该节点的该层是否大于 1,如果大于 1 ,那么如果下层节点为1,那么继续寻找,如果不大于1,那么将点进行分离。①.将点都给右边的节点。②.将一个点给左边的节点,其余的都给右边的节点。代...原创 2019-12-02 15:49:22 · 229 阅读 · 0 评论 -
B. Jamie and Binary Sequence (changed after round)
Codeforces Round #457 (Div. 2)题目链接:http://codeforces.com/problemset/problem/916/B题目大意:输入n,k 两个数字(n的大小1e18)。现在要把n分解成k个2的幂次相加,输出k个幂次,要求满足其中最高幂次要最小,并且满足字典序最大。字典序最大:第一个样例。答案为:(3,3,2,1,0)如果为:(3,3,2...原创 2019-11-27 11:15:36 · 187 阅读 · 0 评论