cf
文章平均质量分 73
Demoo.
来记录不会的题啦
展开
-
C. Yet Another Tournament
那么我们就看能不能赢至少赢x局的人(下标为x+1),假设我们没有赢他,我们的名次是n-x+1,如果我们赢了他,他的局数就是x,我们的局数也是x,我们的名次就可以再提升一名(和他并列),那么我们就想办法看看能不能赢下标为x+1的人。因为我们最多赢x局,所以我们不可能比至少赢x+1局的人(下标为x+2)的名次高,也不可能比至少赢x-1 的人(下标为x)的名次低,因为他最多赢x局。如果我们没有赢x+1的人,那么我们就看能不能把在之前赢过的人里面挑一个人把他换成x+1,根据贪心我们肯定选赢过的a最大的人。原创 2023-01-09 17:53:24 · 381 阅读 · 1 评论 -
C. Koxia and Number Theory
所以,其实就是对所有的2~n/2的质数p,看看每个ai%p的值是否在0~p-1的范围上全都>=2,如果是的话就是no,不是就是yes。所以我们对于每个质因数p,都能找到一个%p的个数是1的数,这就相当于找到了一个形如x%pi=yi的等式,那么最后一定有解。那么其实我们列举每个质因数p,然后判断0~p-1范围内的数被a数组%p之后的数的个数是不是都>=2。如果不是上面的情况,即对于所有p,都有一个a数组%p的值的个数原创 2023-01-08 15:43:45 · 399 阅读 · 0 评论 -
C. Another Array Problem(Codeforces Round #840 (Div. 2) and Enigma 2022 - Cybros LNMIIT)
对mx左边的数,选在mx左边的区间[1,id-1](长度最少是2),那么[1,id-1]里的数就换成了abs(a[1]-[id-1])三个数的总和,全换成a[1],全换成a[3],全换成abs(a[1]-a[2]),全换成abs(a[2]-a[3])=j),把从i~j的数全换成abs(a[i]-a[j])思路:当n>3的时候,我们可以把数组里的数全换成最大值mx,假设mx坐标为id。再对[1,id-1]操作一次,那么[1,id-1]里的数就变成了0。再对[1,id]操作一次,那么[1,id]都变成了mx。原创 2022-12-20 14:00:27 · 179 阅读 · 0 评论 -
G. Garage
那么(a+b)*(b-a)就是4的倍数(除了4,因为a+b和b-a不可能同时等于2)那么(a+b)*(b-a)也是奇数(除了1,因为不可能同时等于1)题意:a*a+x=b*b,让你求符合条件的第n个x是多少。如果两个数同奇偶的话:(a+b)是偶数,(b-a)也是偶数。如果两个数不同奇偶的话:(a+b)是奇数,(a-b)是奇数。思路:x=b*b-a*a=(a+b)*(b-a)对于前四个数单独输出,后面的数每隔三个是4的倍数。那么我们对a,b两个数进行讨论。那么我们就列出来这些数。原创 2022-10-20 11:32:30 · 234 阅读 · 0 评论 -
D. Problem with Random Tests
设s1里第一个1的坐标为id1,第一个0的位置是id2,那么id1~id2-1的位置上都是1。那么对于第二个字符串来说就要把s1是0的位置尽可能用1进行按位与运算。那么我们就枚举开头为id1~id2-1,长度为len的字符串,使两个子串进行按位或运算之后的二进制形式的值最大,并输出。那么s2的长度就是s1里第一个0到最后一个0的长度len。思路:因为要尽可能大所以s1要尽可能长,并且最高位为1。那么我们找到第一个是1的字符当做s1的开头。每一位与一下看最大字典序就可以了。让你选两个子串s1 s2。原创 2022-10-18 10:34:01 · 449 阅读 · 0 评论 -
C. Card Game
思路:平局的时候很容易能知道只有一种情况,就是最后一轮肯定是B拿到最大的数,然后A拿第二大的,然后倒数第二轮A肯定是A拿到第三大的,B拿到第四大的...有n-2个里拿n/2-1个,减去B先手赢的情况,减去平局的情况就是A赢的情况。那么B赢的情况就是总情况减去A赢的情况和平局的情况 平局就是1,输出即可。A先出一个牌,B如果能出一个大于他的牌,就是平局,如果不能就是A赢,是B先出牌,如果是A能出一个大于他的牌,就是平局,否则就是B赢,另一种情况是最大的数A没有拿,B拿着,A拿了倒数第二大的数,原创 2022-10-06 17:18:26 · 572 阅读 · 0 评论 -
C. Ayoub‘s function(推公式)
先算出最多的情况的数量,即全是1的情况的子串的数量:sum=(op+1)*op/2。0的个数有n-m个,m个1把0分成m+1段,每段就是op=(n-m)/(m+1)当连续的0的个数是op时:他组成的全是0的子串的数量是(op+1)*op/2。还有不能平均分的情况,那么就有(n-m)%(m+1)个长度是op+1的0。思路:可以发现当m个1把0平均分成m+1段的时候子串数量是最大的。然后我们分别算出来这两种情况的子串的数量,用最大情况减去就可以啦。求至少包含一个1的连续的子串的最大数量。原创 2022-09-27 21:48:26 · 274 阅读 · 0 评论 -
B. Integers Have Friends
思路:因为每个数的余数不好确定,所以我们利用差分数组来消除a[i]%m==k中k的计算。a[l]%m==a[i+1]%m==...==a[r]%m (m是>=2的一个数)然后差分数组b中,满足题意的区间里的所有数都是m的倍数,m就是这个区间的公约数。因为m>=2,所以我们只需要找到gcd>=2的区间的最大长度就可以了。题意:给你n个正数,找到最长一段区间l~r,使这里面的所有数满足。(没了解过st表的可以移步我的另一篇来看)解决区间最值问题用RMQ中的st表来解决。原创 2022-09-27 17:38:16 · 316 阅读 · 0 评论 -
E. Array Game
题意:有一个个数为n的数组,a和b每次只能选第一个或者最后一个,每次选的数要比前面选过的数都大,第一个可以随便选,a第一个选,问谁最后能赢。结论:从头开始的连续递增序列的长度和从尾开始的连续递增序列的长度只要有一个是奇数的话就是a赢,都是偶数的话就是b赢。因为a先选,a选过之后留给b的数都是偶数个,那么b选过之后肯定能留给a一个数让a来选,那么a就赢了,否则的话就是b赢。那么我们就看从第一个开始最长递增序列的长度是多少,长度设为con1,然后再看从最后一个开始最长递增序列的长度是多少,长度设为con2。原创 2022-09-25 22:06:57 · 184 阅读 · 1 评论 -
D. Solve The Maze
思路:我们可以先把所有坏人用墙围起来,如果有好人和坏人挨着说明不行,直接输出NO,把坏人围起来之后我们从终点bfs,看没有被墙隔绝的部分有几个G,如果有全部的G说明可以,否则就没有合适的方案。题意:给你一个n*m的图,‘.’是空的,‘#’是墙,‘B’是 坏人,‘G’是好人,出口在[n][m],我们可以把空的变成墙,问有没有一种可能让所有的华坏人被困在里面,让所有的好人出去。原创 2022-09-24 19:38:42 · 330 阅读 · 0 评论 -
D. AND, OR and square sum
题意:给你n个数,我们可以每次执行的操作是:选择两个下标i,j,a[i]=a[i]&a[j],a[j]=a[i]^a[j],可以进行无数次操作,求最后的所有数的平方和最大是多少。思路:设a[i]=x,a[j]=y,我们可以发现x+y==x&y+x^y,可以发现两个数当和一定的时候我们将其中一个数构造的最大的平方和是所有情况里和最大的。比如:x==101,y=110时,我们可以发现把x换成111,y换成100时的两个数的平方和最大。那么我们只需要统计一下二进制每位上的1的个数,原创 2022-09-24 17:46:45 · 294 阅读 · 0 评论 -
CF706D Vasiliy‘s Multiset
思路:异或的话存二进制字典树,对插入操作就是平常的操作,因为还有一个删除和询问所以我们需要用个num数组记录一下一个数的二进制每个位的数的个数,删除的时候遍历一下num--,因为有询问操作所以我们要用一个数组v来记录一下到一个编号的数是多少。题意:刚开始a集合里有一个数0,那么我们有q个操作:1.+x,将x加到集合a中,2.-x,将x从集合中减掉,3.?x,输出集合a中的数与x的最大异或值。原创 2022-09-24 16:54:33 · 151 阅读 · 0 评论 -
D. Slime Escape codeforce(贪心)
那么我们走到6的时候就加上了一个正数1,但是我们要走到6的话我们得先满足我们本身这个数sum得大于-2+-3=-5,如果能满足的话我们加上1这个正数,向右继续看能不能走到7,如果不能满足的话说明我们到不了6,那么直接跳出。题意:有n个数,最开始从k开始走,每次可以向左或者向右走,走到第i个位置时加上a[i]这个数,如果加上a[i]之后这个数小于0的话我们就不能走到i,走到最左边或者最右边算成功,那么我们能否走成功。如果能的话我们就加上这个正数再向左走一步,如果加上了所有能加上的正数向左走一步的话原创 2022-09-24 16:34:28 · 473 阅读 · 0 评论 -
A. Maze codeforce
对第一个x开始bfs,用一个数con记录变成.的数量,每次找到一个队头相邻的x把他变成.之后加入队中(注意判断加入队列里的数,重复加入会爆栈)思路:设图里的‘.’有s个,那么我们要把k个变成X使剩下的联通可以转化为把所有的‘.’变成X之后,再找s-k个由‘.’组成的联通的图。题意:有一个由‘#’和‘.’组成的n*m的图,需要我们把k个‘.’变成X,使得剩下的.还是一个联通块。原创 2022-09-23 16:59:29 · 267 阅读 · 0 评论 -
C. Madoka and Childish Pranks
当 g[i][j]==1的时候我们执行第一个操作,把i-1,j和i,j加入答案序列。如果g[1][i]==1的话,进行第二个操作,把1,j-1和i,j加入答案序列。题意:让你形如拿棋盘格的01字符来将全是0的矩阵变为目标矩阵。因为可以覆盖,竖着的01可以将除了第一行下面的所有的0变成1。然后我我们从第n排开始到第二排结束,每次从第一列开始遍历。所以只有当g[1][1]是1的时候才输出-1。横着的01可以将除了第一列的所有的0变成1。然后遍历第一排,从第m列开始遍历。原创 2022-09-06 20:47:39 · 188 阅读 · 0 评论 -
B. Madoka and the Elegant Gift
列举每个起点,如果g[i][j]+g[i][j+1]+g[i+1][j]+g[i+1][j+1]==3的话就输出NO。题意:简化一下就是如果这个图中的联通的1组成的图形不是矩形的话就输出NO,否则输出YES。如果在一个2*2的矩形里,里面的1的个数相加个数是3的话就不对。那么我们为了方便计算就把字符串数组变为数字数组,(i的范围是1~n-1,j的范围是1~m-1)那么我们找规律简化一下就能发现,最小的情况。原创 2022-09-07 10:29:23 · 478 阅读 · 0 评论 -
D. Magical Array
1.对不是特殊数组的数组c来操作,我们选两个数i,j,c[i]-1,c[j]-1,c[i-1]+1,c[j+1]+1。2.对是特殊数组的数组c来操作,我们选两个数i,j,c[i]-1,c[j]-1,c[i-1]+1,c[j+2]+1。那么我们就找这n个数组里c[i]*i的和,当一个数组的和大于其他所有数组的和的时候。题意:给一个长度为m的数组b,然后把b复制成n个和b一样的c数组。然后给你n个变化后的c数组,让我们找特殊数组并计算操作了几次。正常数组在j+1的位置+1而特殊数组是在j+2的位置+1的,原创 2022-09-06 16:01:00 · 81 阅读 · 0 评论 -
C. Road Optimization(dp)
dp[i][1][j]的没有被移除的路标就是i,那么他的状态转移方程就是到达第i个路标所需的最短时间(第i-1个路标有没有被移除)再加上到第i+1个路标所需的时间(a[i]*(d[i+1]-d[i]))题意:有一条长为l的路,有n个路标,每个路标i有位置坐标d[i]和到下一个路标的路程里每公里所需的时间a[i],求最多能移除k个路标的所用的最短时间。初始化:因为第0个位置的路标不能删除,所以我们初始化dp[0][1][0]=a[0]*(d[1]-d[0]),剩下的都是正无穷就行了。原创 2022-09-05 14:15:35 · 155 阅读 · 1 评论 -
C. Monoblock
对于一个断点来说,他的贡献是所有包含a[i]和a[i+1]的区间的个数:i*(n-i)(左边有i个数当开头,后面有n-i个数当结尾,所以区间个数是i*(n-1) )那么对于所有的子段的awesomeness值就是所有断点的贡献加上子段个数个1。=a[i+1]的话那么a[i]就是一个断点。一个子段的awesomeness值是该子段连续相同的数的个数。那么我们就先减去原来的i对i-1和i+1的影响。再加上修改之后的i对i-1和i+1的影响。每次修改i的话对i-1和i+1有影响。先算出原始数组的断点的贡献。..原创 2022-09-05 15:37:25 · 224 阅读 · 0 评论 -
C. Monsters And Spells
题意:有n个怪兽我们要消灭,第i个怪兽在第ki秒出现,生命值为hi,我们要在第ki秒消灭他。思路:如果第r=ki秒要达到hi的话那么我们在第l=ki-hi+1秒的时候开始攻击。当然也有一段和一段重合的情况,那么我们的l就取最早开始的时间,r就取最晚结束的时间。2.当i-1秒的攻击时x的时候我们可以选择第i秒的攻击力是x+1或者1。当ki秒出现血量为hi的怪物时,我们的攻击力必须到hi来打败他。如果重合,那么我们的l就取最早开始的时间,r就取最晚结束的时间。然后l和r取新的区间的l r 就可以了。...原创 2022-08-17 22:12:20 · 178 阅读 · 0 评论 -
C. And Matching
题意:给定一个数n(是二的幂),然后我们把从0~n-1一对一对分,使分出来的每一对的异或和加起来等于m,如果构造不出来输出-1,能的话输出构造的组。但是有一种特殊情况是当n==4,m==3的时候,n-3和1相等,不能匹配,所以直接输出-1了。=n-1的时候,我们能用m&n-1直接得出来m。思路:我们能发现对于任意一个数i,他和n-1-i异或之后是0。然后将本来与m相匹配的n-1-m和本来与n-1匹配的0匹配。我们可以拿n-1和n-2创造出来m-1,然后剩下的数i分别与n-1-i匹配即可。...原创 2022-09-07 10:29:46 · 204 阅读 · 4 评论 -
D. Permutation Restoration
Monocarp had a permutation aa of nn integers 11, 22, ..., nn (a permutation is an array where each element from 11 to nn occurs exactly once).Then Monocarp calculated an array of integers bb of size nn, where bi=⌊iai⌋bi=⌊iai⌋. For example, if the permutati原创 2022-07-10 21:41:54 · 313 阅读 · 0 评论 -
P3166 [CQOI2014]数三角形
给定一个 N\times MN×M 的网格,请计算三点都在格点上的三角形共有多少个。注意三角形的三点不能共线。输入一行,包含两个空格分隔的正整数 MM 和 NN 。输出一个正整数,为所求三角形数量。输入 #1复制2 2输出 #1复制76说明/提示数据规模与约定对于全部的测试点,保证 1\le N,M\le10001≤N,M≤1000。思路:方法就是先枚举出所有点能组成的三角形的数量,然后再减去在一条线上的三个点构成的三角形的数量。公式: 所有点的总数:(n+1)*(m+1)所有点里挑三个点就原创 2022-07-08 16:03:45 · 267 阅读 · 0 评论 -
CF1422C Bargain
Sometimes it is not easy to come to an agreement in a bargain. Right now Sasha and Vova can't come to an agreement: Sasha names a price as high as possible, then Vova wants to remove as many digits from the price as possible. In more details, Sasha names s原创 2022-07-08 15:46:24 · 160 阅读 · 0 评论 -
CF340C Tourist Problem
Iahub is a big fan of tourists. He wants to become a tourist himself, so he planned a trip. There are nn destinations on a straight road that Iahub wants to visit. Iahub starts the excursion from kilometer 0. The nn destinations are described by a non-nega原创 2022-07-08 11:23:58 · 70 阅读 · 0 评论 -
C. The Third Problem Codeforces Round #804 (Div. 2)
You are given a permutation a1,a2,…,ana1,a2,…,an of integers from 00 to n−1n−1. Your task is to find how many permutations b1,b2,…,bnb1,b2,…,bn are similar to permutation aa.Two permutations aa and bb of size nn are considered similar if for all intervals原创 2022-07-05 14:46:38 · 253 阅读 · 0 评论 -
CF1648B Integral Array
You are given an array aa of nn positive integers numbered from 11 to nn . Let's call an array integral if for any two, not necessarily different, numbers xx and yy from this array, x \ge yx≥y , the number \left \lfloor \frac{x}{y} \right \rfloor⌊yx⌋ ( xx原创 2022-07-04 18:53:53 · 119 阅读 · 0 评论 -
CF1644C Increase Subarray Sums
You are given an array a_1, a_2, \dots, a_na1,a2,…,an , consisting of nn integers. You are also given an integer value xx .Let f(k)f(k) be the maximum sum of a contiguous subarray of aa after applying the following operation: add xx to the elements on e原创 2022-07-04 17:56:37 · 280 阅读 · 0 评论 -
C. 3SUM Closure
You are given an array aa of length nn. The array is called 3SUM-closed if for all distinct indices ii, jj, kk, the sum ai+aj+akai+aj+ak is an element of the array. More formally, aa is 3SUM-closed if for all integers 1≤i原创 2022-06-29 21:55:42 · 542 阅读 · 0 评论 -
C. Water the Trees Educational Codeforces Round 126 (Rated for Div. 2)
There are nn trees in a park, numbered from 11 to nn. The initial height of the ii-th tree is hihi.You want to water these trees, so they all grow to the same height.The watering process goes as follows. You start watering trees at day 11. During the jj-th原创 2022-06-27 22:42:45 · 253 阅读 · 0 评论 -
B. Bit Flipping Codeforces Round #782 (Div. 2)
You are given a binary string of length nn. You have exactly kk moves. In one move, you must select a single bit. The state of all bits except that bit will get flipped (00 becomes 11, 11 becomes 00). You need to output the lexicographically largest string原创 2022-06-25 16:57:52 · 151 阅读 · 0 评论 -
C. Dolce Vita Educational Codeforces Round 127 (Rated for Div. 2)
Turbulent times are coming, so you decided to buy sugar in advance. There are nn shops around that sell sugar: the ii-th shop sells one pack of sugar for aiai coins, but only one pack to one customer each day. So in order to buy several packs, you need to原创 2022-06-25 11:32:11 · 275 阅读 · 0 评论 -
C. Palindrome Basis Codeforces Round #785 (Div. 2)
题意:给你一个数n,写出所有加数是回文数和是n的方案的个数。思路:完全背包问题,先把1-N的回文数处理一下,建立一个p数组,相当于在这p个物品当中挑选使他们的和相加是n的方案总数,f[i][j]用来表示从前i个回文数中选,总和相加是j的方案数,方案数由两部分组成,一部分不包含pi,一部分包含pi,那么转移方程就是f[i][j]=f[i-1][j]+f[i-1][j-p[i]]。还可以优化成一维,那么在初始化的时候需要把初始状态初始化为1,因为第一个回文数是1,而且方案只有一个。由于我们已经知道n的范围,我们原创 2022-06-24 16:16:43 · 138 阅读 · 0 评论 -
C. Where is the Pizza? Codeforces Round #788 (Div. 2)
题意:给你排列a和b,再给你一个c数组,里面不确定的数是0,确定的数要么是a[i]要么是b[i],求有多少种排列c。思路:c[i]如果是1的话说明已经确定不用管了,如果是0,要么选a[i]要么选b[i],当a[i]==b[i]的时候,我们只能填a[i]一个数,只有一种情况,当a[i]!=b[i]的时候,如果选a[i]的时候就不能再选b数组中等于a[i]的数了,这两个数是有关联的,我们把有关联的数放到一个集合中,如果集合里的数个数为1的话,就是a[i]==b[i]的情况,我们就只有一种情况,如果集合里的数被确原创 2022-06-24 11:17:54 · 145 阅读 · 0 评论 -
C. Binary String Educational Codeforces Round 128 (Rated for Div. 2)
题意:给你一串全部由0或1组成的字符串,你可以删除前面连续的任意长度的字符,再删除后面连续的任意长度的字符,可以删完,操作的成本是删除的1和剩下字符的0的个数取最大值,问最小的成本。思路:设剩下的子串的左端点为l右端点为r,用sum数组来表示前缀和,那么子串的1的个数就是sum[r]-sum[l-1],子串的0的个数就是r-l+1-(sum[r]-sum[l]),删除的1的个数就是sum[n]-(sum[r]-sum[l]),这两个值取最大。后半部分都一样,所以我们看前半部分:当sum[n]>=r-l+1时原创 2022-06-23 21:18:43 · 120 阅读 · 0 评论 -
c. rooks defenders
题意:有两个操作,1是将车放入x,y,2是将x,y里的车删除,3是询问x1,y1,x2,y2里是不是所有的格子都被车攻击,车可以攻击他所在的一行和一列。思路:想判断相应的行和列有没有被车攻击,我们就判断大于x1和x2的没有车的地方的行和列x和y,如果x小于x2说明有行没覆盖,如果y小于y1说明有列没有被覆盖,行和列相交肯定有一个格子没有覆盖,所以我们就按2这个来判断输出yes或no。被我们用两个set数组a,b分别来存没有被车攻击的行和列,初始时所有的都没有被攻击就把1-n的数全加入set里,然后用两个数组原创 2022-06-23 10:09:05 · 207 阅读 · 0 评论 -
C. Zero Path Codeforces Round #801 (Div. 2) and EPIC Institute of Technology Round
题意:给一个n*m的矩阵,里面全是-1或1,每次只能往下或者往右走,让你判断有没有一种方法使从左上角到右下角的路径的和为0。思路:从左上走到右下,本质上是走了一列个格子(n个)之后又走了一行-1个格子(m-1),如果想使最后结果是0,那么走的格子数相加肯定是需要是偶数,因为偶数个1和-1才有可能抵消为0,如果相加是奇数的话就说明必定会剩下一个数抵消不了,直接输出no,那么整理一下就是n+m-1是奇数即n+m是偶数的话一定走不了。然后我们设mx[i][j]是从左上角到[i][j]这个点的最大可能和,mn[i]原创 2022-06-22 11:06:37 · 284 阅读 · 0 评论 -
Codeforces Round #791 (Div. 2)B. Stone Age Problem
题意:给你一个数组,两个操作,1.把下标为i的数改为x,2.把所有数都改为x,求最后数组的总数思路:参考了大佬的思路,是创建一个结构数组a用来存放,结构里一个val记录i上次改变的值,ts记录上次被改变的时间点,再用一个结构all来存上次操作2之后的值和时间点,当进行操作1的时候,比较一下a[i]上次被改变的时间点和上次操作2之后的时间点,如果a[i].ts>=all.ts说明了a[i]的改变在操作2之后,那么我们就直接用a[i]里存的值进行运算,sum+=x-a[i].val,如果a[i].ts...原创 2022-06-18 16:07:52 · 233 阅读 · 0 评论 -
Codeforces Round #799 (Div. 4)D. The Clock
思路:这题唯一的坑点就是他会一直持续到第二天第三天等等,走完所有不同的时间之后最终会和直接刚开始的时刻相等,所以我们在算的时候正常算,把跳出循环的条件设成刚开始的时刻就行。(注意小时在算的时候是24计时,所以每次我们要%24)原创 2022-09-07 10:31:32 · 233 阅读 · 0 评论 -
Codeforces Round #794 (Div. 2)A. Everything Everywhere All But One
You are given an array ofnnintegersa1,a2,…,ana1,a2,…,an. After you watched the amazing film "Everything Everywhere All At Once", you came up with the following operation.In one operation, you choosen−1n−1elements of the array and replace each of the...原创 2022-05-26 14:07:39 · 493 阅读 · 0 评论