![](https://img-blog.csdnimg.cn/20190905201748946.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
CF
Ray.C.L
不开longlong见祖宗
展开
-
Codeforces Round #664 (Div. 2) C. Boboniu and Bit Operations (思维)
题目链接思路:答案所处范围是[0——(1<<9)]枚举答案,检测其正确性,|运算只能使一个数变大或者不变,最小就是不变的情况,(a[i]&a[j])|ans==ans对于每个a[i]都成立那么说明ans可行#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostream>#include<vector&原创 2020-08-13 11:59:37 · 161 阅读 · 0 评论 -
D. Binary String To Subsequences Codeforces Round #661 (Div. 3)
题目链接思路:找每个0去匹配前面离他最近的1,每个1去匹配前面离他最近的0,如果1,0前面没有可以匹配的,那么就以自己独立开头开始匹配。#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostream>#include<vector>#include<queue>#include<bits/st原创 2020-08-06 16:29:43 · 91 阅读 · 0 评论 -
Codeforces Round #659 1384A. Common Prefixes(构造)
思路:第一个串我们上200个a然后要前缀严格相同,假设现在要求前缀为k的长度相同,我们就把上个串的第k+1个修改了。#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostream>#include<vector>#include<queue>//#include<bits/stdc++.h>原创 2020-07-25 12:04:26 · 170 阅读 · 0 评论 -
Codeforces Round #658 (Div. 2) C1. Prefix Flip (Easy Version)(构造)
题意:给2个字符串,求串1到目标串如何转化,转化是有长度为i的前缀将0变1 ,1变0,然后倒置。打印操作次数和每次操作的前缀长度。思路:每当我们碰见i位置2个串不相同的位置,我就修改第i个位置,怎么改,把第i个位置放到第一个也就是修改前缀长度为i,然后修改1位置,然后再变回来,#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostre原创 2020-07-22 10:48:13 · 294 阅读 · 0 评论 -
Codeforces Round #655 (Div. 2)C. Omkar and Baseball(思维)
题目链接思路:我们发现只有三种情况第一种是已经排好序了那么就不用动是0,我们吧他与排序后的数组比较,看有多少块区间里面的数都是不同的,如果块数大于1,我们对整个区间的数动2次,如果块数小于1或者没有一个数是在排好序的位置上那么我们只需要动1次。#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostream>#include&l原创 2020-07-12 10:09:05 · 151 阅读 · 0 评论 -
Codeforces Round #655 (Div. 2) B. Omkar and Last Class of Math(数学)
题目链接思路:偶数直接除2就是他的lcm的最小情况,奇数时求暴力求他因子计算lcm的最小情况#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostream>#include<vector>#include<bits/stdc++.h>using namespace std;typedef long原创 2020-07-12 10:02:30 · 133 阅读 · 0 评论 -
Codeforces Round #619 (Div. 2) C. Ayoub‘s function(思维)
题目链接思路:#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostream>#include<vector>//#include<bits/stdc++.h>using namespace std;typedef long long ll;#define SIS std::ios::sync原创 2020-07-09 18:01:56 · 118 阅读 · 0 评论 -
Codeforces Round #621 (Div. 1 + Div. 2) C. Cow and Message(思维)
题目链接思路:出现次数最多是是1次或者2次,那么我们统计一下1次和2次的次数,dp1【i】表示’a’+i出现的次数,dp[i][j]表示字符串“‘a’+i’b’+j”出现的次数,每次都更新一次其他字符到当前位置字符的次数。#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostream>#include<vector>原创 2020-07-09 12:27:41 · 133 阅读 · 0 评论 -
Educational Codeforces Round 60 (Rated for Div. 2) C. Magic Ship
题目链接思路:二分检测答案可行性,(x1,y1是起始位置,x2,y2是终点)此时的天数是m 因为风向每n天一轮回,我们算从1-n天每天风向会把船推向的位置,那么m天后x的位置是m/n * ax[n]+ax[m%n]+x1,同理y的位置就是m/n*ay[n]+ay[m%n]+y1,最后我们算从当前x,y到终点x2,y2的曼哈顿距离是否小于等于m ,若小于等于m则可行#include <cstdio>#include <cstring>#include <algorithm原创 2020-07-09 09:58:42 · 126 阅读 · 0 评论 -
Codeforces Round #654 (Div. 2) D. Grid-00100(构造)
题目链接思路:题目要求价值最小,怎么放价值最小?每次放的地方行和列最大值最小值之差为1,那么当行或者列%n==0时就从头开始此时的行列最大值最小值之差依旧是1#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostream>#include<vector>//#include<bits/stdc++.h>原创 2020-07-02 13:33:13 · 189 阅读 · 0 评论 -
Codeforces Round #640 (Div. 4) E. Special Elements
题目链接思路:要求我们找连续区间和能否组成一个数组元素,因为数据范围比较小,我们用前缀和去算区间和,然后map保存每个数组元素出现次数,暴力寻找每种区间和的值,判断他是否在数组中出现过。#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostream>//#include<bits/stdc++.h>using原创 2020-06-28 11:03:35 · 146 阅读 · 0 评论 -
Educational Codeforces Round 90 (Rated for Div. 2) D. Maximum Sum on Even Positions
题目链接思路:我们发现只有长度为偶数时,反转子段才有意义,我们看样例11 7 3 4 7 6 2 9从头开始选 ,1 7 反转后的多出的贡献是 7-1=6,1 7 3 4反转之后多出的贡献是 (4-3)+(7-1)=7但是这没有覆盖全比如3 7 1他的反转应该是从7开始反转得到的贡献最大,所以我们还需要从下标为1的开始再选一次,接着看样例17 3反转后多出的贡献是 7-3=4,7 3 4 7反转后多出的贡献是(7-3)+(4-7)=1,所以我们跑一下这两种反转的最大贡献加上原有贡献原创 2020-06-27 11:02:17 · 144 阅读 · 0 评论 -
Codeforces Round #640 (Div. 4) F. Binary String Reconstruction(构造)
题目链接思路:全是0和1的时候特判,然后构造字符串先输出n0个0然后对n2分奇偶情况输出。#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostream>#include<bits/stdc++.h>using namespace std;typedef long long ll;#define SIS st原创 2020-06-25 10:34:21 · 170 阅读 · 0 评论 -
Codeforces Round #652 (Div. 2) C. RationalLee
题目链接思路:如果朋友分到的数是1那么每次吧当前最大的给他此时价值最大,分完1后,从分到数多的人开始,每个人的价值是当前最大值+最小值,然后把剩下小的数按顺序分给当前这个人,以保证分到数小的人价值最大。#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostream>#include<bits/stdc++.h>u原创 2020-06-24 16:58:14 · 121 阅读 · 0 评论 -
Codeforces Round #643 (Div. 2) D. Game With Array
题目链接思路:构造一个数组,前面全是1,最后一个数是S-N+1,如果S-N+1>N那么当K=N时就能构造一个子数组和不为K或者S-K数组。#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostream>#include<bits/stdc++.h>using namespace std;typedef l原创 2020-06-22 16:05:17 · 142 阅读 · 0 评论 -
Codeforces Round #644 (Div. 3) E. Polygon
题目链接思路:根据题目描述,每个炮弹存在的位置必须建立在上一个基础上(n行或者n列除外)炮弹存在的基础是他的右边和下面二者必须有一个存在。#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostream>#include<bits/stdc++.h>using namespace std;typedef long原创 2020-06-22 10:56:26 · 140 阅读 · 0 评论 -
C. Johnny and Another Rating Drop
题目链接思路:以5为例000001010011100101最后一位的贡献是5,第二位的贡献是2,第1位的贡献是1.每一位的贡献是n右移1位所变成是10进制数的贡献。101——>10——>15+2+1=8#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostream>#include<原创 2020-06-22 10:14:53 · 181 阅读 · 0 评论 -
Codeforces Round #651 (Div. 2) C. Number Game
题目链接思路:奇数A必赢,1,2特判,偶数时,如果有奇数因子,并且除去奇数因子后不为2那么A必赢#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostream>#include<bits/stdc++.h>using namespace std;typedef long long ll;#define SIS原创 2020-06-21 16:55:38 · 182 阅读 · 0 评论 -
Codeforces Round #648 (Div. 2) B. Trouble Sort
题目链接思路:只要b数组含有0和1那么就可以换成有序,判断一下全0或者全1的情况下是否已经有序即可#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostream>#include<bits/stdc++.h>using namespace std;typedef long long ll;#define SI原创 2020-06-20 17:53:40 · 149 阅读 · 0 评论 -
Codeforces Global Round 8 C. Even Picture(构造)
题意:给你一个n让你在坐标上画图,画一个连通图,他们的没个格子与相邻格子都是偶数,有n个格子是上下左右都有相邻格子。思路:按题意去画,图画出来就好了。这里画的是n=3的情况#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostream>#include<bits/stdc++.h>using namespace原创 2020-06-19 15:26:51 · 151 阅读 · 0 评论 -
Codeforces Global Round 8 B. Codeforces Subsequences
题目链接思路:通过排列组合找到最小的序列#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostream>#include<bits/stdc++.h>using namespace std;typedef long long ll;#define SIS std::ios::sync_with_stdio(f原创 2020-06-19 09:49:22 · 324 阅读 · 0 评论 -
Codeforces Round #648 (Div. 2) C. Rotation Matching
题意:给你两个序列,第二个序列可以左右平移(环)问最多能和第一个序列对齐多少个元素。思路:1 2 3 4 5 A2 3 4 5 1 Bb[1]向右边平移1格与a[2]对齐此时后面也一样是向右边平移1格,我们就可以统计平移距离为i时有多少个能对齐求最大值就可以。我们记录a序列中每个元素的位置,用b中元素去对齐时算他们的距离,求最大值。#include <cstdio>#include <cstring>#include <algorithm>原创 2020-06-18 15:17:20 · 83 阅读 · 0 评论 -
Codeforces Round #644 (Div. 3) D. Buying Shovels
题目链接题意:给你n,k。求k范围内n的最大约数思路:从1到n\sqrt{n}n枚举他的约数,求最大。#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostream>#include<bits/stdc++.h>using namespace std;typedef long long ll;#defin原创 2020-06-18 10:57:14 · 148 阅读 · 0 评论 -
Educational Codeforces Round 89 (Rated for Div. 2) B. Shuffle
题目链接题意:给你一个数组除了位置x为1其他位置为0,给你m个区间,如果该区间存在1那么可以通过交换让这个区间全为1,前面的操作会影响后面的区间,问最多能有多少个1.思路:找到第一个x存在的区间,然后从这个区间向后遍历,进行区间合并。#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostream>#include<bi原创 2020-06-18 10:34:22 · 98 阅读 · 0 评论 -
Codeforces Round #650 (Div. 3) F1. Flying Sort (Easy Version)
题目链接题意:给你一个数组可以执行两种操作吧一个元素放到数组的最开头或者最末尾,问最少多少次操作可以让他升序。思路:我们看排好后的序列的子串在原始数组出现的最长长度就是他不用变的长度,答案就是n减去他。#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostream>#include<bits/stdc++.h>原创 2020-06-17 22:10:11 · 300 阅读 · 0 评论 -
Codeforces Round #650 (Div. 3) D. Task On The Board(思维,模拟)
题目链接思路:0是个特殊值,只有最大的字母才会在零的位置上,我们先把最大的字母填到0的位置上,然后把其他不是0的位置的值减去0位置给他们的贡献值,比如此时0位置的下标为num,那么其他位置a[i]的贡献就变成a[i]=a[i]-abs(num-i),内次更新一轮就会有新的0位置出现,再去填入第二大的字母,一直循环到都为0就可以了~~(脑子不太好使的我写的比较麻烦)~~#include <cstdio>#include <cstring>#include <algorit原创 2020-06-17 19:34:50 · 237 阅读 · 0 评论 -
Codeforces Round #650 (Div. 3)C-Social Distance
题目链接题意:给你一串01串,每个1之间要至少相隔K个单位,问你最多能插入几个1。思路:分成三段1.从头到第一个1出现,2.从结尾到最后一个1出现,3.中间部分,其中1,2两种情况都是可以插入dis(1出现的位置)/(k+1)个1.第三种情况是每2个1之间的距离x可以插入(x-k)/(k+1),因为从插入第一个1开始要与最前面的1间隔K所以要先减去k。最后对全零的情况进行特判。#include <cstdio>#include <cstring>#include <a原创 2020-06-17 15:37:56 · 221 阅读 · 0 评论 -
codeforces——Palindromic Paths(思维)
题目链接题意:给一个01矩阵,求从(1,1)到(n,m)每条路都能组成回文串,最少修改几次。思路:我们可以发现从(1,1)走向(i,j)所走的步数是i+j-2,那么我们记录一下走相同步同时为0或1的个数。我们找到对称的步数,然后比较他们走相同步同时为0或1的和取最小值。(意思为吧一方变成0或者1)#include <cstdio>#include <cstring>#include <algorithm>#include <set>#includ原创 2020-06-16 17:33:49 · 195 阅读 · 0 评论 -
Ehab and Prefix MEXs
题意:让找一个数组B,元素bi不属于ai…an。思路:我们先记录一下ai中出现的数字,如果ai的前一个和后一个不一样,我们可以直接用前一个当bi,如果是一样的,那么我们看看当前谁没用过就用谁。#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostream>#include<bits/stdc++.h>using原创 2020-06-14 15:09:20 · 237 阅读 · 0 评论 -
Codeforces round #649 B. Most socially-distanced subsequence
题目链接题意:让求|s1-s2|+|s2-s3|+…|sk-1 - sk|最大时的最短序列。思路:去掉绝对值之后我们发现如果每三个数是有序的那么我们可以消去中间的数不影响答案,看能消多少。#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostream>#include<bits/stdc++.h>using n原创 2020-06-14 11:33:37 · 174 阅读 · 0 评论 -
Bash and a Tough Math Puzzle CodeForces - 914D(线段树+思维)
题目链接思路描述出处:题意:给出一段序列,两个操作操作1 :给出l,r,x 求区间l-r的gcd,如果至多能改掉区间内的一个数(不影响原序列),使gcd是x的倍数,那么输出YES,否则输出NO操作2 :给出pos,x 将序列中pos位置上的数字改为x思路:首先GCD是具有传递性的,所以可以使用线段树进行维护,但比较麻烦的就是可以改掉一个数。可以试想一下,对于每个区间的查询,我们最终得到的是若干完整返回块的gcd,如果其中有两个块gcd都不是x的倍数,那么肯定不对。如果只有一个块不是呢?这个块原创 2020-05-22 18:51:50 · 145 阅读 · 0 评论 -
Educational Codeforces Round 87 D- Multiset(树状数组+二分)
题意:给你长度为n的数组,q次询问若给出是询问k>0则添加k这个数到数组里,反之则删除第 |k| 个数。最后输出数组剩下的任意一个数,没有输出0;思路:用树状数组的下标存储数组中的数和其出现次数,当k大于0直接添加进入树状数组里,若小于0,则二分查询其在树状数组对应的下标将其修改为0(删除)。#include <cstdio>#include <cstring>#include <algorithm>#include <set>//#inc.原创 2020-05-19 10:34:40 · 557 阅读 · 0 评论 -
Kuroni and Impossible Calculation(快速乘)
题意:%m的值思路:快速乘#include <iostream>#include <algorithm>#include <cstdio>#include <set>#include <sstream>#include<string>#include<queue>#include<sta...原创 2020-03-05 12:32:04 · 161 阅读 · 0 评论 -
Cow and Friend
题意:牛牛有N个喜欢的数,他想从坐标原点跳到(x,0)点,他每次跳跃的距离只能的他喜欢的数请问从原点到X最少跳几次。思路:每次都跳最大的步数如果不能直接跳完,最后2步走折线。#include<map>#include<iostream>#include<algorithm>#define MAXX 100005#define SIS std::i...原创 2020-02-19 20:59:35 · 304 阅读 · 0 评论 -
Air Conditioner-CF
题意:给你客人的人数,和餐厅初始温度,接下来输入每个客人到达的时间和令其感到满意的温度区间L-R,餐厅温度可以上升,下降,不变。问是否能使每个客人满意思路:查找区间是否有交集#include<bits/stdc++.h>#define MAXX 100005#define SIS std::ios::sync_with_stdio(false)#define ll lon...原创 2020-02-17 09:48:15 · 385 阅读 · 0 评论 -
Coffee Break
题目大意:有一位工作人员想利用喝咖啡来休息,所以他给了我们一个数组a,表示他想喝咖啡的时间点(假设她喝咖啡的时间不计),但是呢,他要是频繁喝咖啡老板就不同意了,所以每次喝咖啡的间隔要大于d。问他要将数组中的时间点都经历一边至少要多少天。并把每个时间点是在第几天喝咖啡的输出。 简单来说,就是将这个数组分成n段,每段中每两个数之差大于d。求n的最小值。题解思路:贪心是肯定的,将数组a排序(记住要记录...原创 2020-02-01 12:11:54 · 229 阅读 · 0 评论 -
Evil Straw Warts Live
输入一串字符,先判断是否可以通过变换顺序变成回文串,不是的话输出impossible。然后如果possible,定义一次swap相邻两个字母为一步,计算这个字符串经过最少多少次swap可以变为回文串。具体思维:使用分治的方法……每次搞定最左边和最右边的两个字母,也就是从外向内一层层做成回文串。比如 abcbac 这个,先看最左边的“a”,从最右边开始遍历字符串,找到的第一个“a”就可以经...原创 2020-01-21 13:18:07 · 232 阅读 · 0 评论 -
Remove One Element
题意:求删除一个后的上升子序列的长度。思路:分别记录第i个数前面的递增个数和后面的递增个数,最后遍历所有的i,因为只有两种情况值最大:1. 第i个的递增个数2. 当arr[i-1]<arr[i+1]时,不要第i个时(i-1)前面的递增个数 + (i+1)后面的递增个数。#include <bits/stdc++.h>#define SIS std::ios::sy...原创 2020-01-15 20:56:04 · 420 阅读 · 0 评论 -
Azamon Web Services
题意:给你2个字符串问第一个字符串是否可以调换两个字符的位置使得其字典序小于第二个字符串。思路:对第一个串进行排序,看他是否可能小于第二个串,之后比较排序前与排序后两串第一个不同的位置然后将原始串的该位置调换。比较调换后的串是否小于第二个字符串。#include <bits/stdc++.h>#define ll long long#define INF 0x3f3f3f3...原创 2020-01-15 20:22:29 · 352 阅读 · 0 评论 -
Photo of The Sky
题意:给你n个坐标x,y打乱,组合后求围住n个坐标的最小面积,差小积大求面积。#include <bits/stdc++.h>#define ll long long#define INF 0x3f3f3f3f#define mod 998244353using namespace std;const int N=1e5+5;ll a[2*N];int main()...原创 2020-01-14 18:44:15 · 111 阅读 · 0 评论