思维
狐佑 怜
都写都写(指题解)
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
NC50439 tokitsukaze and Soldier
NC50439 思路: 一道思维题,其实还是比较好想的,跟CF上某次的C题比较类似,先排个序,再用优先队列暴力一下,一次for循环就能完事儿 代码附: #pragma GCC optimize("Ofast","inline","-ffast-math") #pragma GCC target("avx,sse2,sse3,sse4,mmx") #include<bits/stdc++.h> #define int long long #define pb push_back #define p原创 2020-07-17 09:17:46 · 191 阅读 · 0 评论 -
1368C - Even Picture(1500)
1368C - Even Picture 题意: 在一个全是网格的图中,你可以选择一些格子涂灰,请你涂一些格子并且满足以下条件: 所有格子必须是连通的 对于每一个格子,都有偶数个格子与它相邻 有恰好N个格子,它们的上下左右都有格子相邻 思路: 个人觉得下面这种图形是最完美的 每个格子都是偶数个相邻,只要将这种图形的边角不断的重叠就能构造出我们需要的上下左右都相邻的格子一个又一个 所以我们需要初始方块4个,和剩下N*3个格子用来构造每一个四边相邻的格子 代码附: #pragma GCC optimi原创 2020-07-10 20:39:55 · 229 阅读 · 0 评论 -
1368D - AND, OR and square sum
1368D - AND, OR and square sum 题意: 给你N个数,你可以选择任意两个数 i,j ,使得原本a[i]=x,a[j]=y变为a[i]=x&y,a[j]=x|y;,可以做这种操作无数次,请使得这N个数的平方和最大 思路: 题上已经说得很清楚了,用二进制做,直接把每一个数的二进制位都扣下来,然后每次都去取这些二进制位来组成当前能组成的最大数来算平方和 代码附: #pragma GCC optimize("Ofast","inline","-ffast-math") #prag原创 2020-07-10 15:48:02 · 218 阅读 · 0 评论 -
1367B - Even Array (800)
1367B - Even Array 题意: 通过交换数组中的任意位置的元素,能够使得数组的下标的奇偶校验与元素相同的最小操作次数是? 思路: 判断错误的奇数与偶数个数是否相同,相同直接输出,否则输出‘-1’ 代码附: #pragma GCC optimize("Ofast","inline","-ffast-math") #pragma GCC target("avx,sse2,sse3,sse4,mmx") #include<bits/stdc++.h> #define int long l原创 2020-07-10 15:03:51 · 257 阅读 · 0 评论 -
Codeforces Round #650 (Div. 3) A. Short Substrings (800)
A. Short Substrings 题意: 给你字符串B,请你猜出字符串A,字符串B=a[0]+a[1]+a[1]+a[2]+a[2]+a[3]+a[3]……+a[n],其中a[0]和a[n]只出现一次 思路: 先输出a[0],剩下的只输出下标为奇数的 代码附: #pragma GCC optimize("Ofast","inline","-ffast-math") #pragma GCC target("avx,sse2,sse3,sse4,mmx") #include<bits/stdc++.原创 2020-07-10 13:13:02 · 233 阅读 · 1 评论 -
1369A - FashionabLee (800)
1369A - FashionabLee 题意: 给你一个N边形,判断他是否存在一条边平行X轴,一条边平行Y轴 思路: 直接判断N是不是4的倍数,这样上下左右的边才都是平行的 代码附: #pragma GCC optimize("Ofast","inline","-ffast-math") #pragma GCC target("avx,sse2,sse3,sse4,mmx") #include<bits/stdc++.h> #define int long long using namespa原创 2020-07-10 11:21:04 · 348 阅读 · 0 评论 -
Codeforces Round #652 (Div. 2) D. TediousLee (1900)
D. TediousLee 题目大意: 在树第N次成长后,最多能选出多少颗爪型树,求出这个值*4(点的数量) 思路: 经过几次推导,能够发现,会新长出来的点的数量a[i]=a[i-1]+2*a[i-2],因为爪型树的根节点来自a[i-2],左右两边的点来自a[i],下面的点来自a[i-1],能够看出,每当选出一层的根节点为a[i]爪型树,就不能再选根节点层数为a[i-1]和a[i-2]的爪型树,所以能推出递推式ans[i]=ans[i-1]+2*ans[i-2]+(i%3==0); 该递推式的意思值的是从最原创 2020-07-10 09:52:43 · 174 阅读 · 0 评论 -
Codeforces Round #651 (Div. 2) A. Maximum GCD (800)
A. Maximum GCD 题意: 找到[1,n]中GCD最大的一对数的GCD 思路: 暴力秒A,直接输出N/2 代码附: #pragma GCC optimize("Ofast","inline","-ffast-math") #pragma GCC target("avx,sse2,sse3,sse4,mmx") #include<bits/stdc++.h> #define int long long using namespace std; const int N = 2e5+10;原创 2020-07-10 06:09:26 · 127 阅读 · 0 评论 -
1370B - GCD Compression (1100)
1370B - GCD Compression 题意:给一个大小为2N的数组A,请你从该数组从丢弃任意两个数,并将剩下(2N-2)个数两两相加,组成一个新的数组B,该数组B的所有元素的GCD>1 思路: 直接判断奇数奇偶性即可,丢弃两个数后使得奇数的个数为偶数,这样,奇数两两相加,偶数两两相加,GCD==2 代码附: #pragma GCC optimize("Ofast","inline","-ffast-math") #pragma GCC target("avx,sse2,sse3,sse4,m原创 2020-07-10 06:03:23 · 234 阅读 · 0 评论 -
1370C Number Game (1400)
1370C 题意: A和F博弈,给一个数字N,可以做一下两种操作: if(N>1)N--; if(x%2==1 && N%x==0 && N>1 && x>1)N/=x; 不能进行操作的人会输,A先手 思路: 可以看出来,如果N>1&&(N&1)或者N==2,A能赢;如果N是偶数,但是N除以它的最大的奇数(大于1)的值大于2的话,A能赢;其他情况F会赢 代码附: #pragma GCC optimize("O原创 2020-07-09 20:45:40 · 146 阅读 · 0 评论 -
1370D - Odd-Even Subsequence(2000)
1370D - Odd-Even Subsequence 题意: 可以在长度为N的数组中任选K个元素组成一个新的数组,设这个新的数组中下标为奇数的元素中的最大值为K1,下标为偶数的元素中的最大值为K2,求MIN(K1,K2) 思路: 已知 1≤ai≤1e9,使用二分来寻找一个值X,这个X能够使得在选择了长度>=K的新数组后,在这个新数组中的下标为奇数(或者偶数)的所有元素的最大值<=X 代码附: #pragma GCC optimize("Ofast","inline","-ffast-math原创 2020-07-09 20:01:37 · 180 阅读 · 0 评论 -
1370E Binary Subsequence Rotation (2100)
1370E 题意: 两个01串,s和t,你能将s的子串顺时针位移一下,请问最少要多少次操作能使得s==t 思路: 这就是一个思维题,想通了就很简单。不要管位置正确的那些字符,只把位置错误的单独拿出来看,就能发现如果是01010101……这种或者101010……这种就只用一次操作就能把位置修正,所以我们只需要找这样的串一共有多少个就行了 代码附: #pragma GCC optimize("Ofast","inline","-ffast-math") #pragma GCC target("avx,sse2,原创 2020-07-09 12:13:50 · 180 阅读 · 0 评论 -
Codeforces Global Round 9 D. Replace by MEX (1900)
D. Replace by MEX 题意: 存在一个数组A,令该数组中不存在的最小非负数为MEX,每次操作可以让任意a[i]=mex,请在2N的操作次数以内使得数组A非递减 思路: 让a[i]=i,每次操作完边界a[i]都让边界缩小,如果mex==n就放在a[n-1] 代码附: #pragma GCC optimize("Ofast","inline","-ffast-math") #pragma GCC target("avx,sse2,sse3,sse4,mmx") #include<bits/s原创 2020-07-09 09:33:02 · 171 阅读 · 0 评论 -
Codeforces Global Round 9 C. Element Extermination (1400)
C. Element Extermination 题意: 如果a[i]<a[i+1],那么可以消除掉a[i]或a[i+1]中的任意一个,给你一个数组,问其最后能不能被消除到只剩一个元素 思路: 如果a[0]<a[n-1],那该数组一定能被消除到只剩一个,这是为什么呢?因为大于a[0]的能被a[0]消除,小于a[n-1]能被a[n-1]消除,而且因为只有当a[i]<a[i+1]时,才能消除掉a[i]或a[i+1]中的任意一个,也就是说,左边界不可能比a[0]更小了,右边界也不能比a[n-1]原创 2020-07-09 09:26:36 · 251 阅读 · 0 评论
分享