
Codeforces
CF
_昨日不可追
这个作者很懒,什么都没留下…
展开
-
Codeforces 1398 D. Colored Rectangles(dp)
传送门题意:每次可以选不同颜色的数字相乘,求最大值思路:开始写的贪心一直wa7。。。正解:dpdp[i][j][k]dp[i][j][k]dp[i][j][k]表示当前每种颜色选的个数当然为了使结果最大,三个数组都要从大到小排序dp[i][j][k]dp[i][j][k]dp[i][j][k]的下一个状态有三种情况dp[i+1][j+1][k]dp[i+1][j+1][k]dp[i+1][j+1][k]//选RGdp[i+1][j][k+1]dp[i+1][j][k+1]dp[i+1]原创 2020-08-15 13:38:19 · 1560 阅读 · 0 评论 -
Codeforces 1398 C. Good Subarrays(前缀和&&思维)
传送门题意:找区间的和等于区间长度的个数如果把数组的每个数都减1,那找的就是区间和为0的个数思路:求个前缀和,记录一下每个数出现的次数,每次加上该数在前面出现的次数即可(前面每出现一次,就会有一段区间和为0)代码:int t,n;int a[MAXN];ll sum[MAXN];map<ll,ll>p;int main(){ std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); char x;原创 2020-08-15 13:31:08 · 1712 阅读 · 0 评论 -
Codeforces 1398 B. Substring Removal Game(思维)
传送门题意:思路:最优策略肯定是每次选最多的连续的1,不然会被别人选走把字符串整理一下,连续的0或1整理的一块,从连续1最多的选即可代码:int t,n;int a[150];int b[150];int c[150];int main(){ std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); cin>>t; while(t--){ string x; cin&g原创 2020-08-15 13:22:51 · 279 阅读 · 0 评论 -
Codeforces 1398 A. Bad Triangle(水题)
传送门题意:思路:因为是排好序的,只用比较一下a[1]+a[2]和a[n]的大小关系即可代码:int a[MAXN];int main(){ std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); int t; int n; cin>>t; while(t--){ cin>>n; rep(i,1,n)cin>>a[i]; if(a原创 2020-08-15 13:18:36 · 216 阅读 · 0 评论 -
Codeforces 1395 C. Boboniu and Bit Operations(位运算&&枚举答案)
传送门题意:思路:2^9==512最小值不会超过512 ,直接暴力枚举一下答案,如果符合直接输出即可关键是什么样的答案符合因为ans=c1|c2|c3|c4|c5…那么ans&c1==c1一定成立ci=ai&bj,那就看一下对于每一个ai是否都能找到bj(ci=ai&bj)满足ans&ci=ci代码:int main(){ std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);原创 2020-08-13 10:24:39 · 226 阅读 · 0 评论 -
Codeforces 1395 D. Boboniu Chats with Du(贪心&&枚举答案)
传送门题意:思路:先把大于m的放在b数组,小于m的放在a数组枚举一下最终结果中用了几个b,取一个最大值即可看代码应该能明白(有注释)代码:int a[MAXN],b[MAXN];ll sum[MAXN];ll sum2[MAXN];int cmp(int a,int b){ return a>b;}int main(){ std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); ll n,d,m;原创 2020-08-13 10:33:55 · 404 阅读 · 0 评论 -
Codeforces 1395 B. Boboniu Plays Chess(构造)
传送门题意:一个点可以在同一行或者同一列任意移动给定初始位置,找到一种路径可以遍历所有的点一次思路:因为给的初始点不在边界上,所以直接先把他移动到最上面,然后移动到最左面,然后蛇形遍历一下就好(已经遍历过的跳过去)代码:struct sa{ int x,y;}p[MAXN];map<int,map<int,int> >mp;int main(){ std::ios::sync_with_stdio(false),cin.tie(0),cout.t原创 2020-08-13 10:10:37 · 354 阅读 · 0 评论 -
Codeforces 1395 A. Boboniu Likes to Color Balls(奇偶)
传送门题意:给四种颜色的气球,红、绿、蓝、白红、绿、蓝各一个可以变成一个白色的问最终能否构成回文串显然要想构造回文串,四个数里面奇数的个数要么为0要么为1那就看能否把四个数变成这样的即可,讨论一下代码:int main(){ std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); int t; int n; cin>>t; while(t--){ ll r,g,b,w;原创 2020-08-13 10:04:04 · 253 阅读 · 0 评论 -
自然数k次幂的和 CF622 F .The Sum of the k-th Powers(拉格朗日插值)
算是一个模板题,好多拉格朗日插值的题,最后化简之后的式子都用到了这个模板代码://i的k次幂之和typedef long long ll;using namespace std;const int MAXN=1e6+500;const int inf=0x3f3f3f3f;const int mod=1e9+7;//::iterator it;inline int read(){ int s=0,w=1; char ch=getchar(); while(ch&.原创 2020-06-09 13:05:19 · 296 阅读 · 1 评论 -
Codeforces 1359 C. Mixing Water(二分)
题意:一杯热水,一杯凉水,一杯热水,一杯凉水,一杯热水…这样往杯子里加,找到最接近给定温度T,输出最小的加水次数可以发现,加偶数次,即热水杯水等于凉水,它的温度是不变的始终是(h+c)/2加奇数次,即热水杯水等于凉水+1,它的温度随着杯数增加是递减的二分找到奇数杯的最接近温度T的,二分结果可能有误差,在上下摆动算一下最小的就行了typedef long long ll;using namespace std;const int MAXN=1e5+50;const int inf=0x3原创 2020-05-29 16:43:38 · 253 阅读 · 0 评论 -
Codeforces 1359 E. Modular Stability(组合数学)
题意:一个数组无论顺序怎么改变,总满足(((????mod????1)mod????2)…mod????????−1)mod????????=(((????mod????????1)mod????????2)…mod????????????−1)mod????????????找这样数组的数量如果一个数组都是d的倍数,那个这个数组无论咋改变顺序,mod出来的结果都是0代码typedef long long ll;using namespace std;const int MAXN=1e5+5原创 2020-05-29 16:30:27 · 214 阅读 · 0 评论 -
Codeforces 1353 D. Constructing the Array(优先队列)
题意:按照题意模拟即可,因为每次要选长度最大的,相等的话靠左的用优先队列模拟即可代码:using namespace std;const int MAXN=1e5+50;const int inf=0x3f3f3f3f;const int mod=1e9+7;//::iterator it;struct node{ int x,y; bool operator < (const node & a) const { if(y!=a.原创 2020-05-21 16:17:27 · 242 阅读 · 0 评论 -
Codeforces 1354 B. Ternary String(尺取)
题意:找最短的子串包含1,2,3 3个字符,尺取模板题代码:typedef long long ll;using namespace std;const int MAXN=1e5+50;const int inf=0x3f3f3f3f;const int mod=1e9+7;//::iterator it;char s[2*MAXN];vector<int>p[5];int vis[300];int main(){ std::ios::sync_w原创 2020-05-20 19:02:09 · 410 阅读 · 0 评论 -
Codeforces 1354 D. Multiset(树状数组+二分)
题意:两种操作1<=k<=n插入kk<0删除第(-k)大的数思路:用树状数组记录每个数的个数删除的时候,二分找到第k大的数代码:#include <iostream>#include <stdio.h>#include <algorithm>#include <string.h>#include <vector>#include <math.h>#include <map>#原创 2020-05-20 16:38:24 · 312 阅读 · 0 评论 -
Codeforces 1355 C. Count Triangles(组合计数)
题意:思路:满足的条件是x+y>z枚举x+y的值,然后确定z的范围,确定x或y(x+y=i确定一个另一个也确定了)的范围,乘法原理,相乘即个数因为x+y=i,可以根据x+y>z,确定z的范围(与[c,d]取交)x取值为[a,b],x+y=iy的取值是[i-b,i-a]与[b,c]取交代码:#include <iostream>#include <stdio.h>#include <algorithm>#include <strin原创 2020-05-18 17:27:42 · 403 阅读 · 0 评论 -
Codeforces Round #633 (Div. 2) D. Edge Weight Assignment(思维,树深)
传送门题意:给一个树,然后我们给边赋值使得,任意两个叶子结点之间的路径异或值为0,求路径上最大最小有几个不同的数字思路:显然,最小为1或3如果有两个叶子结点的路径长度为奇数,那就为3最大值应该是n-1,就是每条边都赋不同的值,但是如果两个叶子结点的距离为2(就是某个结点有多个叶子结点,这些叶子结点两两之间的距离都是2,这些边的值必须都相等),那这两条边的值必须相同,那最大值就会减少...原创 2020-04-13 10:06:27 · 232 阅读 · 0 评论 -
Codeforces Round #633 (Div. 2) C. Powered Addition(贪心)
传送门题意:一个数组,第T秒可以给数组中的任意一个元素加quick(2,T-1)问最少多少秒可以把该数组变成非递减序列思路:直接找与前面差值最大的是多少即可,看他需要几秒,他可以了其他的也就可以了代码:#include <iostream>#include <stdio.h>#include <algorithm>#include <...原创 2020-04-13 09:54:44 · 287 阅读 · 0 评论 -
Codeforces Round #633 (Div. 2) B. Sorted Adjacent Differences(排序,思维)
传送门题意:给一个数组,然后让你找一个满足题意的排序方式思路:先从小到大排序,拿第一个举例-2,4,5,5,6,8要输出的序列应该是每次从前面选一个,然后从后面选一个-2,8,4,6,5,5然后把该序列倒着输出即可代码:#include <iostream>#include <stdio.h>#include <algorithm>...原创 2020-04-13 09:50:02 · 163 阅读 · 0 评论 -
Codeforces Round #633 (Div. 2) A. Filling Diamonds(找规律)
传送门题意:找规律,题意就是有多少种方式填充该图形画两个就发现,输出n即可代码:#include <iostream>#include <stdio.h>#include <algorithm>#include <string.h>#include <vector>#include <math.h>#i...原创 2020-04-13 09:41:13 · 285 阅读 · 0 评论 -
Educational Codeforces Round 85 (Rated for Div. 2) D. Minimum Euler Cycle(字典序最小的欧拉回路)
目录传送门题意:思路:代码:传送门题意:思路:构造的欧拉回路是1 2 1 3 1 4 1 5……1 n2 3 2 4 2 5……2 n3 4 3 5……3 n……n-1 n1一共n*(n-1)+1个数二分取[L,R]的数即可代码:#include <iostream>#include <stdio.h>#include <algori...原创 2020-04-11 13:35:50 · 219 阅读 · 0 评论 -
Educational Codeforces Round 85 (Rated for Div. 2) C. Circle of Monsters(前缀和 预处理 贪心)
传送门题意:思路:先直接杀死第一个,然后sum[i]记录到杀死第i个时,需要的子弹,然后遍历从(2–n)开始杀死需要的子弹,因为刚才算过前缀和了,所以不用一个一个算了,只用处理好边界就行了(边界就是,当从第i个开始时,要先把第i个杀死,而且第i个不能用第i-1的爆炸了,第一个不用直接杀死,可以用第n个的爆炸)代码:#include <iostream>#include ...原创 2020-04-11 13:27:39 · 237 阅读 · 0 评论 -
Educational Codeforces Round 85 (Rated for Div. 2) B. Middle Class(贪心)
目录传送门题意:思路:代码:传送门题意:思路:排个序,然后从最大的开始判断是否合适即可代码:#include <iostream>#include <stdio.h>#include <algorithm>#include <string.h>#include <vector>#include <math.h...原创 2020-04-11 13:13:56 · 249 阅读 · 0 评论 -
Educational Codeforces Round 85 (Rated for Div. 2) A. Level Statistics
传送门题意:思路:就是让判断给出的数据是否合理两个p,cp,c肯定是是增加的,要么不变p不变的话,c肯定不能变始终p应该是大于等于c的如果两个同时增加,p增加的应该大于等于c增加的代码:...原创 2020-04-11 13:09:28 · 279 阅读 · 0 评论 -
Codeforces Round #630 (Div. 2) D. Walk on Matrix(构造)
传送门题意:给一个数k,构造一个矩阵用上面那个代码跑出来的值dp[n][m],和找到一个走法,走到(n,m)路径上的值相与的最大值ans,他们的差值是k思路:构造一个2*3的就可以了跑出来的dp[n][m]是0,然后从(1,1)(1,2)(2,2)(2,3)这样的相与值是k代码:int main(){ std::ios::sync_with_stdio(false),c...原创 2020-04-01 01:32:55 · 243 阅读 · 0 评论 -
Codeforces Global Round 7 C. Permutation Partitions(思维)
传送门题意:给两个数n,k把长度为n的数组分成k个不相交的区间把分成每个区间的最大值加在一起找到和的最大值,并输出共有多少种分法等于该最大值思路:要想值最大,那前k大的数肯定在不同的区间分法的话,就看这k个位置之间的有几个数,该区间与下一个区间就有几种情况,把所有的乘起来即可代码:#include <iostream>#include <stdio.h>...原创 2020-03-20 08:46:50 · 163 阅读 · 0 评论 -
Codeforces Global Round 7 B. Maximums
传送门题意:思路:就是给你b数组,还原出a数组,输出a[i]等于前面a[1]到a[i-1]的最大值加b[i]代码:#include <iostream>#include <stdio.h>#include <algorithm>#include <string.h>#include <vector>#include...原创 2020-03-20 08:39:54 · 148 阅读 · 0 评论 -
Codeforces Global Round 7 A. Bad Ugly Numbers(思维)
传送门题意:给一个n,输出一个长度为n的数,这个数不能整数每一位思路:2333333333即可是奇数,所以不能整除2,所有数的和等于3*(n-1)+2,不是3的倍数,所以不能整除3代码:#include <iostream>#include <stdio.h>#include <algorithm>#include <string.h&...原创 2020-03-20 08:33:48 · 164 阅读 · 0 评论 -
Codeforces Round #628 (Div. 2)【A B C D】
传送门A. EhAb AnD gCd直接输出1,n-1即可#include <iostream>#include <stdio.h>#include <algorithm>#include <string.h>#include <vector>#include <math.h>#include <map...原创 2020-03-15 12:26:57 · 263 阅读 · 0 评论 -
Codeforces Round #628 (Div. 2) D. Ehab the Xorcist(异或构造,思维)
传送门题意:给两个整数u,v,构造一个数组,使得数组的异或和等于u,数组的和等于v要求构造的数组尽可能的短思路:对于每种情况讨论输出即可,注意几种情况的特判看代码应该能明白代码:#include <iostream>#include <stdio.h>#include <algorithm>#include <string.h>...原创 2020-03-15 12:15:35 · 1319 阅读 · 0 评论 -
Codeforces Round #628 (Div.2) C.Ehab and Path-etic MEXs(树,思维)
传送门题意:给一颗n个结点的数,然后n-1条边,我们要做的就是把0—n-2,这n-1个数赋给n-1条边,然后使得所有MEX(u,v)最大值最小,输出每条边赋的值MEX(u,v)是u到v这条路径上,没出现的最小非负整数思路:如果是一条链,随便给值即可如果不是一条链,那肯定有个结点的度大于等于3,把这个结点周围的三个点分别给值0,1,2,这样所有MEX(u,v)最大值为2,因为不可能有一条...原创 2020-03-15 11:17:44 · 2451 阅读 · 0 评论 -
Codeforces Round #627 (Div. 3) D. Pair of Topics(二分,思维)
传送门题意:The pair of topics ???? and ???? (????<????) is called good if ????????+????????>????????+???????? (i.e. it is more interesting for the teacher).找满足这个不等式的对数思路:移项得 ????????-????????>????????-????????我们把ai−bia_i-b_iai−bi放到数组中排序,每次只用找到,原创 2020-03-13 09:48:45 · 2478 阅读 · 0 评论 -
Codeforces Round #627 (Div. 3) C. Frog Jumps(思维)
传送门题意:开始位置在0,问能否跳到n+1位置每步只能跳d在1——n每个位置有方向,L,R,求d的最小值思路:只用找相邻两个R之间的最大值即可代码:#include <iostream>#include <stdio.h>#include <algorithm>#include <string.h>#include <v...原创 2020-03-13 09:35:35 · 2569 阅读 · 4 评论 -
Codeforces Round #627 (Div. 3) B. Yet Another Palindrome Problem
传送门题意:一个长度为n的数组,为删除一些数后,剩下的数能否构成长度大于3的回文数组思路:只要能找到两个相等的数,且他们的间距大于2即可o(n^2)的暴力就能过比赛时写了一个o(n)的就是把所有相等的数放到一个vector里,如果他出现大于2次,看最远的间距是否大于2即可,找到一个就可以代码:#include <iostream>#include <stdio...原创 2020-03-13 09:29:35 · 436 阅读 · 0 评论 -
Codeforces Round #627 (Div. 3) A. Yet Another Tetris Problem
传送门题意:给一个长度为n的数组,两种操作,一个是把任意一个ai变成ai+2a_i变成a_i+2ai变成ai+2,另一个是如果所有数都大于0,可以把所有数减1,问通过这些操作能否把所有数变为0思路:如果任意两个数之差为奇数,那么就不可能,因为每次只能增加2(偶数),减的时候都是同时减的代码:#include <iostream>#include <stdio.h...原创 2020-03-13 09:22:44 · 421 阅读 · 0 评论 -
Educational Codeforces Round 83 (Rated for Div. 2) C. Adding Powers
传送门题意:思路:每步可加kik^iki,也可以跳过不加,看能否构成给定数组数组中的0是不需要处理的我们直接一步一步把数分解即可,看要用到的i是否够用,每个i只能用一次做的过程:假设k=9,有一个数是b[i]=93+94+959^3+9^4+9^593+94+95int l=0;//要用的幂次 while(1){ while(b[i]%k==0){ b[...原创 2020-03-10 10:10:54 · 2767 阅读 · 0 评论 -
Educational Codeforces Round 83 (Rated for Div. 2) D. Count the Arrays(组合数学)
传送门题意:Your task is to calculate the number of arrays such that:each array contains ???? elements;each element is an integer from 1 to ????;for each array, there is exactly one pair of equal elements;f...原创 2020-03-10 09:49:08 · 2594 阅读 · 0 评论 -
Codeforces Round #626 B. Count Subrectangles(思维)
传送门题意:两个数组a,b(仅有0,1)一个整数kci,j=ai∗bjc_{i,j}=a_i*b_jci,j=ai∗bj找出所有c矩阵的子矩阵的大小为k且里面的值都为1思路:很显然a[i]=0a[i]=0a[i]=0时,第i行的数全为0,b[i]=00,b[i]=00,b[i]=0时,第i列的数全为0我们把a,ba,ba,b数组处理一下,把连续的1放在一起,相当于把数组压缩一下...原创 2020-03-07 23:09:00 · 408 阅读 · 0 评论 -
Codeforces Round #626 C. Unusual Competitions(括号匹配)
传送门题意:给一个长度为n的字符串,只有′(′和′)′'('和')'′(′和′)′组成我们可以选取任意一段长度为len的字串,把它随便排序,需要花费的时间为len秒,问最小需要多长时间,原字符串完全匹配,不可能的话输出-1思路:不可能的情况就是(和)(和)(和)的数量不相等做法:遍历一遍,记录( 和 )的个数,等他们两个数量相等时,判断一下该段是否已经匹配,若没有匹配需要花费时间排序...原创 2020-03-07 22:01:34 · 395 阅读 · 0 评论 -
Codeforces Round #626 A. Even Subset Sum Problem(奇偶)
传送门题意:给一个长度为n的数组,问是否能找到一个该数组的子集的和为偶数输出子集大小,以及在原数组中的位置,不存在输出-1思路:不存在的情况就一种,n==1且a[1]是奇数如果数组中有偶数,直接输出那偶数即可否则输出21 2即可,因为数组全是奇数,前两个相加肯定是偶数代码:#include <iostream>#include <stdio.h>#...原创 2020-03-07 21:53:37 · 239 阅读 · 0 评论 -
CodeCraft-20 (Div. 2) C. Primitive Primes(思维)
传送门题意:两个多项式相乘,得h(x),随便找到h(x)的某一项系数CtC_tCt%p!=0,输出t即可思路:考虑乘完之后h(x)的每一项系数c0:a0∗b0c_0:a_0*b_0c0:a0∗b0c1:a0∗b1+a1∗b0c_1:a_0*b_1+a_1*b_0c1:a0∗b1+a1∗b0c2:a0∗b2+a1∗b1+a2∗b0c_2:a_0*b_2+a_1*b_...原创 2020-03-05 17:14:12 · 255 阅读 · 0 评论