
codeforces题解
文章平均质量分 78
codeforces题解
JGOOD是是
芝士JGOOD
展开
-
Codeforces Round 893 (Div. 2) D.Trees and Segments
当然这样子操作的总复杂度是O(n^4),我们肯定是不能接受的,那么怎么能让它复杂度降下来呢?我们可以利用dp来预处理,用dp[i][j]来表示[i~n]区间,操作数最大为j时,1串的最大长度。可以发现n原创 2023-08-17 21:23:10 · 385 阅读 · 0 评论 -
Codeforces Round 888 (Div. 3) A~F
比如第一个数是0,第二个数是0,用1来异或这两数后,第一个数变1,第二个数变1,他们两相与为1;比如第一个数是1,第二个数是1,用0来异或这两数后,第一个数还是1,第二个数还是1,他们两相与还是1;比如第一个数是0,第二个数是1,用1来异或这两数后,第一个数变0,第二个数变1,他们两相与为0;用0来异或这两数后,第一个数还是0,第二个数还是1,他们两相与还是为0。①1~n之间恰好有两个数的位置上是空的,并且恰好有一个数多余的数,等于这两个位置加起来,这样就能使得1~n填满。原创 2023-07-26 12:55:13 · 398 阅读 · 0 评论 -
Codeforces Round 883 (Div. 3) A~G
当q小于1e6时,直接预处理判断即可,而当q大于1e6时时候,若k等于4,则(1-q^4)/(1-q)>1e18,超过了n范围了,所以当q>1e6时k只可能等于3,此时只需要判断q^2+q+1=n,是否存在整数根即可。给你n个m行的出题时间,比赛在第h分钟罚时结束,每做一个题的罚时会累加到后面,你是第一个人,问你的排名是多少(若有人和你并列,你的排名则在那个人的前面)。给你一个n,问你是否能够找到(1-q^k)/(1-q)(等比数列前n项和)恰好等于n,其中q,k为自定义,q>=2,k>=3。原创 2023-07-08 12:53:44 · 878 阅读 · 1 评论 -
Educational Codeforces Round 151 (Rated for Div. 2) A~D
首先,对于每一位上数字的数字k,我们从它的范围[li,ri]遍历一遍,在遍历的过程中,若k在字符串中存在,则最优的选法是数字k在未被“删”去的字符串中第一次出现的相同数字的靠后位置。分类讨论,若B点的横坐标和C点的横坐标相对于A点的纵坐标在同一侧,则对于答案的贡献为B点和C点与A的横坐标距离的较小值,也就是“公共横坐标路径”,公共纵坐标路径的贡献的计算同理。给你三个整数n,k,x,你可以使用1~k中除x以外的任意数字,并且能使用无数次,问你能不能从中选出拼出n的数字。若我们选择了数字2,则子序列从111。原创 2023-07-01 17:12:12 · 997 阅读 · 2 评论 -
Codeforces Round 859 (Div. 4) A~G
思路:我们考虑最“坏”的情况,数组为1,1,2,4,8,16......,可以发现它们都是2的幂次,通过二进制的思想可以发现他组成数的范围为1~sum,所以1~sum都能利用前面的数组成,利用前缀和判断下一个数是否大于sum即可。思路:利用前缀和二分判断区间内的总和是否合法,若左区间合法则r=mid,反之l=mid+1,直至l=r。思路:按照题意模拟即可,主要就是判断有没有重复一开始的两步行为,若有则输出-1。思路:把偶数全放前面,把奇数全放后面,这样只用看偶数之和是否严格大于奇数之和。原创 2023-03-20 14:13:59 · 491 阅读 · 1 评论 -
Educational Codeforces Round 144 (Rated for Div. 2) C. Maximum Set
问在区间[L,R] 中由这个区间某些数内构成的好的集合的最长长度是多少,以及且满足这个长度的好集合有多少个。当然,一开始我们需要特判下l*2>r的情况,此时集合最大长度为1,并且因为集合中的第一个数也就是最后一个数可以取l~r的所有值,所以方案数为r-l+1。PS:最开始左端点为l,并且p*左端点=l并且原创 2023-03-01 21:14:08 · 583 阅读 · 3 评论 -
Codeforces Round #849 (Div. 4) A~G2
而若t原创 2023-02-05 00:10:26 · 1202 阅读 · 7 评论 -
Codeforces Round #847 (Div. 3) A~E
排列的第一个数在每个数组的第一个位置总共会出现n-1次,由此我们可以确定排列的第一个数为k,然后我们找到那个数组第一个数不是k的数组,这个数组就是排列第2~n的数字,输出第一个数并且输出该数组即可。若一个数前面没连续数字,则该数对于答案的贡献为该数出现的次数,但若该数前一个数出现过了,那么该数的一部分就能合并到前一个数里面,减少了上一个数出现次数的贡献(该数贡献最多减少至0)。已知道所有骰子的数量,骰子的点数总和,以及拿走一个最大值的点数总和,请构造所有骰子的点数。求出一个数字的前几位和 π 相同。原创 2023-01-28 16:57:25 · 996 阅读 · 2 评论 -
Educational Codeforces Round 141 (Rated for Div. 2) C. Yet Another Tournament
在一开始,第i个人会赢i场,但是你可以选择任意k个不同的a[i],并且满足这k个a[i]的和小于m,然后你就可以让这k个a[i]对应位置的胜场减一,并且你的胜场为变为k,也就是你选择a[i]的数目。然后你就可以选择i=1,i=3,i=4,因为a[1]+a[3]+a[4]=1+2+1原创 2023-01-09 03:00:11 · 534 阅读 · 0 评论 -
B2. Palindrome Game (hard version)
因为Alice先手,并且此时字符串为回文,所以刚开始Alice只能选择将0变1的操作,之后若剩下的0的个数大于1,Bob则也可以进行一个将0变1的操作,将字符串变回文,这样重复下去直到轮到Bob时0的个数为1个了,Bob进行翻转操作,Alice下一步也就是游戏的最后一步,Alice只能选择将0变1。Alice的第一步可以先选择将中间的0变成1,这样选择了之后字符串仍是回文串,主动权就到了Alice身上,Alice可以重复字符串长度为偶数时Bob的操作,从而达到必胜的目的。(1)将一个0变为1,消耗1美元;原创 2022-10-12 16:46:54 · 1782 阅读 · 0 评论 -
Hello 2023 D. Boris and His Amazing Haircut
思路:显然,若存在a[i]原创 2023-01-04 17:05:37 · 895 阅读 · 1 评论 -
Good Bye 2022: 2023 is NEAR D. Koxia and Game
最后在有解的情况下,若结点a[i]=b[i],则方案数*n,因为c[i]无论怎么选都不会使得本来有解的情况变成无解,所c[i]可以在1~n中任选。=b[i],则看a[i]和b[i]是否在一个环中,若在一个环中,就说明我们可以在这个环中逆时针选一次,顺时针选一次,方案数*2。而若a[i]和b[i]原本就一样的话,c[i]可以选任何值,对方案的贡献值为*n,若不一样的话,则c[i]只能等于a[i]或者b[i]。首先我们需要知道,a[i]、b[i]和c[i]中一定要有两个是相同的,并且。可以画成下面这样的图。原创 2023-01-02 21:53:23 · 651 阅读 · 5 评论 -
Good Bye 2022: 2023 is NEAR C. Koxia and Number Theory
的格子,怎么放都会有一个格子里的物品数小于2(鸽巢原理),所以只需要枚举。给定一个长度为n的数组,请问是否存在一个数 x ,使得任意两个数。即可,最后的最后别忘了判断数组内有数字重复的情况。若是输出 YES ,反之输出 NO。就不为1了,就不符合题意了。好了,现在我们提炼一下上面的规律。中至少要有一个能选,也就是。就没值可以选了(此时若。都不能选),因此若要。原创 2023-01-01 15:48:02 · 726 阅读 · 5 评论 -
Educational Codeforces Round 136 (Rated for Div. 2) C. Card Game
而将用n-1逼出了n,相当于牌堆里少了两张牌,也就是回到了总牌数为n-2的情况,唯一不同的是,这次是Bob先手,而总牌数为n-2时是Alice先手,所以这时总牌数为n时Alice获胜的情况数就是总牌数为n-2时的Bob获胜的情况数,所以当Alice只拿到了n-1的情况数即为b[n-2]。由此可以得出平局的局面只有一种,而Alice赢的局面有C[n-1][(n/2)-1]+b[n-2]种,剩下的局面即为Bob赢的局面了,即为。因此,Alice获胜的总情况数为C[n-1][(n/2)-1]+b[n-2]。原创 2022-12-20 18:08:24 · 518 阅读 · 0 评论 -
Codeforces Round #835 (Div. 4) A~G
Codeforces Round #835 (Div. 4) A~G原创 2022-12-03 21:15:25 · 458 阅读 · 0 评论 -
D. Yet Another Problem
我们设使得前缀异或和为0的下标为x,区间左端点为l,那么SumXor[x]==SumXor[l-1],因为这样SumXor[x]^SumXor[l-1]的值才为0,也就是区间[l,x]的异或和为0。因为异或是不进位的加法,所以若一个区间的异或和为0,那么每个数各个二进制的位数上的1的个数必须为偶数,所以若一整个区间各个二进制的位数上的1的个数为偶数,并且选择了一个区间各个二进制的位数上的1的个数为偶数,那么剩下的那个区间的各个二进制的位数上的1的个数也肯定为偶数,它的异或和肯定为0。若该区间的长度为偶数。原创 2022-11-06 18:28:56 · 480 阅读 · 0 评论 -
Codeforces Round #831 (Div. 1 + Div. 2) A~D
给定一个 n∗m 的矩阵,在 [1,1]的位置放置了 k 个棋子, k 个棋子是 1−k 的排列,给定这些棋子从上到下放置的顺序。类似这样模拟即可,每次操作过后判断矩阵里放的棋子数是否小于n*m-4个,这是因为(1,1)和(n,m)已经占了两个格子,所以剩下的格子中我们必须留有两个空格子,才能保证放了棋子之后还有一个空格子,用来移动位置。因为满足棋子在点(n,m)上从大到小排列的情况,所以若矩阵里现有的棋子放进(n,m),能使它是从小到大排列的,那我们就把它放进去。2.将5放在(n,m)点的位置。原创 2022-10-31 15:48:29 · 601 阅读 · 0 评论 -
Codeforces Round #831 (Div. 1 + Div. 2) C
而若我们将一个极值放在w1,另一个极值放在w2,那我们最少能得到max-min的分数,所以可以得出我们在w2中我们放的一定是最大的那几个值,或者最小的那几个值,接下来我们需要做的就是枚举这个过程了。从三个背包中拿出三个石头,假设冲三个包中拿出的石头的质量为 a,b,c ,最终的分数为 |a−b|+|b−c| ,取石头的人会最小化这个值,请问如何分配石头可以使得最终的分数最大。选石头的人依然选石头的人可以选出max-w2_max+(w1中元素和w2元素俩俩相差的最小值),还是小于max-min。原创 2022-10-30 23:45:10 · 363 阅读 · 0 评论 -
Codeforces Round #830 (Div. 2) C2. Sheikh (Hard Version)
对于第二个优化点,我们可以定义一个计数器,来计算去掉了几个非0端点,当去掉的非零端点到达一定值时,我们就可以停止二分查找了,因为之后的查找所去掉的端点都会使sum[l,r] - xor[l,r]减小。若要缩小区间并且使得sum[l,r] - xor[l,r]不变,且选择区间上的值不为0,那么我们一定只能选择有限个,因为若改变区间并且sum[l,r] - xor[l,r]不变,,因此我们得出在[l,r]的范围内sum[li,ri] - xor[li,ri]的最大值就是sum[l,r] - xor[l,r]。原创 2022-10-27 19:52:15 · 420 阅读 · 0 评论 -
Codeforces Round #829 (Div. 2) A~D
若1和-1的总数目为奇数则构造不了使得总价值为0的方法,因为划分区间在本质上只是能吧一些-1变成1,把一些1变成-1,或者不变。给定一个[-1, 0,1]组成的数组,将该数组拆分成若干区间,每一个区间的价值为a[l]-a[l+1]+a[l+2]-a[l+3]......a[r]。当n为偶数时,我们可以两两分组,每组选择两次长度为1的区间,或一次长度为2的区间,若选择两次长度为1的区间会使得总价值不变,选择一次长度为2的区间会使得总价值-2或者总价值+2,我们最多选择n/2组,所以当n为偶数的时候必有解。原创 2022-10-24 17:17:36 · 634 阅读 · 0 评论 -
Educational Codeforces Round 138 (Rated for Div. 2) A~D
Educational Codeforces Round 138 (Rated for Div. 2) A~D题解原创 2022-10-21 18:51:29 · 946 阅读 · 0 评论 -
Codeforces Round #827 (Div. 4) A~G
Codeforces Round #827 (Div. 4)原创 2022-10-14 13:35:51 · 1605 阅读 · 2 评论