
codeforces
FrostMonarch
这个作者很懒,什么都没留下…
展开
-
codeforces 1354D - Multiset (线段树或者2分)
题目大意:已知一个数列an,我们每次可以添加一个数k,或者把第k大的数字去掉。问我们经过k次操作后,数列中任意1个剩余的数字。n,q<=1e6解题思路:首先最简单的思路是线段树。线段树我们可以在每一个叶子节点用数字表示这个区间有多少个数字比如an:1 1 1我们的区间[1:1]就是3。然后做一个区间求和树即可。单点修改就在对应位置加1,去掉数字的话,我们就询问一下子节点中的左右节点,若左节点的和大于我们需要取出的第k个数,我们就往左走,否则k-=left_tree[root](表示我们原创 2020-05-22 20:06:39 · 204 阅读 · 0 评论 -
codeforces 1336C - Kaavi and Magic Spell(思维,区间DP)
题目大意:已知有字符串s,t。每次我们可以从左开始,选择s的字符,选择好的字符可以放在a的左边或者右边(a原始为空)。现在问我们,有多少种不同的放法可以使得a的前缀是t.s,t长度为n, n<=1e3.解题思路:这里我们考虑使用区间DP,设dp[l][r] 为a成功匹配t时候,[l,r]满足要求的串的个数(满足要求指:前缀是t,后面是任意字符的情况)。那么我们可以模拟这个过程...原创 2020-04-22 15:05:49 · 274 阅读 · 0 评论 -
codeforces 1338A - Powered Addition (二进制表示)
题目大意:现在有一个数列an,每次,我们可以进行无数次操作,每次可以选择任意的数字往其中加2^x,其中x为第x次操作。问我们,为了使得最终数列满足单调递增,我们最少需要做多少次的操作。n<=1e5解题思路:首先,我们从左往右看数列,假如一个数比前面的数字要大,那么很明显地,我们不应该对这个数字再增加(否则给后面的数字带来负担),当比前面的数字ai-1要小的时候,我们需要思考这...原创 2020-04-15 13:37:51 · 501 阅读 · 0 评论 -
codeforces 1333C - Eugene and an array (贡献法,前缀和,双指针)
题目大意:我们称一个子串是好的,当且仅当里面的连续子串不能求和为0。 现在给我们一个串an,问我们里面有多少个好的连续子串。len(an)<=1e5.解题思路:首先,我们要用一种贡献法的思维。更具体地,我们发现,假如在an中部分区间[l,r]求和为0,以[l,r]为基础的向外拓张的串都是不好的串,例如[l-1,r] , [l,r+1]等等这种,所以我们的好的串必定不能包含[l...原创 2020-04-11 16:44:54 · 300 阅读 · 0 评论 -
codeforces 1332C - K-Complete Word (回文,频次贪心)
题目大意:现在我们称一个字符串str满足以下两个条件为k完美的。(1)str是回文串(2)str中的字符串以k为周期现在我们有一个字符串s,问我们怎么改变最少的字符使得这个字符串为k完美的。解题思路:首先,我们发现满足这两个特征的字符串必定是每k个字符都是回文串。所以我们构造的字符串只要满足这个条件就好了。那么剩下的我们统计相对应位置的字母频次,让字母多的那个作为本个回文串...原创 2020-04-01 11:19:19 · 415 阅读 · 0 评论 -
codeforces 1332D - Walk on Matrix(构造,位运算)
题目大意:有一个迷宫,小明从左上角可以走到右下角。每次小明走到一个格子,他都可以得到小明当前的分数 按位与 本个格子数字之后的分数。小明初始拿着的分数是:左上角的格子的数。现在有一位参赛者写了一个这样的dp:很快参赛者bob发现了他的dp是有问题的,现在让你构造一个迷宫,使得bob的dp的输出和最优输出相差k.k<=1e5. 注意,迷宫里的数字不能超过3e5.解题思路:...原创 2020-04-01 10:18:51 · 1104 阅读 · 0 评论 -
codeforces 1312d count the arrays(组合数学)
题目大意:已知区间长度为n,现在按照规定,我们从[1,m]中选择一部分数字放入这个区间。规定:必须有一个数字是重复的。存在下标i,使得下标小于i的数字递增,下标大于i的数字递减,问我们总共有多少种不同的方法来放这些数字。n,m<=1e5.解题思路:首先,我们可以想到从中选出n-1个数字,然后我们可以让其中一部分的数字重复,但是最大值不能够重复,否则破坏了约束。接着我...原创 2020-03-12 11:55:37 · 260 阅读 · 0 评论 -
codeforces 1312 e Array Shrinking(区间DP)
题目大意:数列中相同的两个数可以合并,合并后为原来的数字加1,请问数列最短的长度。n<=500.解题思路:很自然地我们想到用dp[l][r]来记录区间[l,r]中最短的长度。然后我们开始枚举区间中间的点k。但是这里有一点不同,因为这里存在区间合并的可能性,所以我们需要询问一下,假如dp[l][k]==1 && dp[k+1][r]==1 && ...原创 2020-03-12 11:43:35 · 348 阅读 · 0 评论 -
codeforces 1294e Obtain a Permutation(暴力)
题目大意:有一个二维矩阵Anm,每次我们可以选择其中一个数替换,或者选择一列让它进行向上的循环位移。现在问我们,为了让矩阵变成:1 2 ... ... mm+1 m+2 ... ... 2m... ... ... .,.. ...1+(n-1)*m ... m+(n-1)*m需要至少进行几次操作。n*m<=2e5.解题思路:为了讨论方遍,本题的所...原创 2020-03-09 19:36:02 · 430 阅读 · 0 评论 -
codeforces 1305D - Kuroni and the Celebration(树,节点度数)
题目大意:已知有一个n个节点的树。我们可以询问n/2(向下取整)次任意两个节点的LCA(关于什么是LCAhttps://www.geeksforgeeks.org/lowest-common-ancestor-binary-tree-set-1/),问我们怎么确定根节点。n<=1e3解题思路:因为这里的n的范围,我们考虑n^2的算法。首先有一个结论:我们每次询问两个度数...原创 2020-03-05 09:58:13 · 341 阅读 · 0 评论 -
codeforces C - Kuroni and Impossible Calculation(思维)
题目大意:已知一串数An,现在让我们算,其中1<=i,j<=n, 或者我们可以理解为n<=1e5,m<=1e3.解题思路:分类讨论:n<=m时,我们可以暴力算。当n>m时,那么An中肯定有其中两个项的模m后相等,所以这一项在连乘后贡献出0,所以结果为0.这题很巧妙的一点是,通过这样的分类后,模的性质发挥了作用,很巧妙。#includ...原创 2020-03-04 21:26:13 · 355 阅读 · 1 评论 -
codeforces 625 div2 Journey Planning(推公式)
题目大意:有数列An, 我们可以选择从一个下标i开始,我们可以跳去下标j当且仅当j-i=A[j]-A[i].问,为了使我们能够跳的地方的最大,那么我们应该怎么选择路线,输出最大值。n<=1e5. A[i]<=2e5.解题思路:我们发现,两个下标能跳的条件可以通过公式等价于j-A[j]=i-A[i]. 同时结果会加上A[j]+A[i].所以我们可以让i-A...原创 2020-03-02 11:27:06 · 226 阅读 · 0 评论 -
codeforces 624 div3 three integeers (暴力枚举)
题目大意:已知a<=b<=c. 现在我们可以做如下操作现在我们需要让新的a,b,c满足 b%a==0 && c%b==0且我们需要,求x,y,z。a,b,c<=1e4。解题思路:我们发现b在这里有最核心的位置因为需要同时满足两个整除约束,所以我们这里考虑枚举b。b的范围可以到达2e4,比如我们恰好让b等于1e4+1使得b%a==...原创 2020-02-27 17:06:37 · 228 阅读 · 0 评论 -
codeforces 615 div3 MEX maximzing (构造 hash)
题目大意:即a是一个空的数列。a总共插入q次,每一次加入新元素,假如对于每次得到的新序列,我们都可以对其中的任一个元素做 x的操作,即:vector<int> a;for(int i=0;i<q;i++){ a.push_back(yi); vector<int> tmp =a ; //ask sth about tmp ...原创 2020-01-23 15:51:18 · 184 阅读 · 0 评论 -
codeforces 614 div2 Aroma's Search(倍增 曼哈顿距离)
题目大意:已知,我们从点出发,已知我们最远可以走的距离是t,问我们在最远走不超过t的情况下,最多能走几个点,其中距离的计算用的是曼哈顿距离即从点到距离为. 关键数据范围:解题思路:首先我们意识到,每个点坐标都是指数级别的递升,因为很显然x,y是满足类似等比数列的表达式,其中公比大于等于2. 具体证明可以用放缩把b1和b2扔掉就能看出来了。所以我们总共处理的点不超过 log...原创 2020-01-22 12:31:31 · 241 阅读 · 0 评论 -
codeforces ECR 80 minimax problem (二分 构造)
题目大意:有n个数列,选出第i,j个,我们可以得到新数列如下:for k 1->m: a[z][k]=max(a[i][k],a[j][k])问我们得到的新数列z中,哪一个的min(a[z][k])最大 即:max(min (a[z][k]))) {k:1->m }解题思路:这种最小值最大 或者 最大值最小一般都是用二分来做。我们直接枚举答案mid,...原创 2020-01-17 13:15:53 · 216 阅读 · 0 评论 -
codeforces 613 div2 Fadi and LCM(LCM和GCD的关系 因子分解)
题目大意:给出一个数X找出数字A,B满足:LCM(A,B) == Xmax(A,B)最小解题思路:首先我们知道A,B必须是X的因子。因为根据公倍数的概念,X=k1*A; X = k2 *B 。其中k1k2是常数。那么我们就开始遍历X的因子咯注意以前的因子分解都是从2到sqrt(x),现在因为需要max(A,B)最小,所以我们从sqrt(x)->2这里找。假如找到...原创 2020-01-11 11:39:28 · 303 阅读 · 0 评论 -
codeforces 605 div3 Nearest Opposite Parity(反向建图 超级源 BFS)
题目大意:现在有一个无权图,每个节点都是0或者1,问所有0节点到最近邻1节点的距离以及所有1节点到所有0节点的最短距离。解题思路:无权图最短路径很容易想到BFS,但是假如直接对每个节点都做BFS,复杂度O(N^2)会超时。另外,很容易地我们也想打一个记忆化搜索,因为有些信息是我们重复了的,比如某个0节点到1节点的最近距离,已经跑过一次了我们就不需要再跑一次。但是,问题是这里我们用BFS...原创 2020-01-01 20:11:34 · 173 阅读 · 0 评论 -
codeforces 608 div2 portals(带反悔的贪心)
题目大意:我们要攻略n个城堡,每个城堡有ai,bi,ci三个参数,我们到达城堡i时必须至少有ai个人才能攻略,不能攻略输出-1到达一个城堡后能够加bi个人。同时我们允许放1个人在城堡i防守,这样我们能得到ci的分数。注意过了这个城堡就不能再选择之前的城堡进行防守。但是,这里有一些道路允许我们在城堡b到城堡a,其中b大于a。解题思路:很自然地,我们每次到达一个城堡都尽可能进行defend...原创 2019-12-18 22:15:11 · 249 阅读 · 0 评论 -
codeforces 603 div2 Everyone is a Winner(二分)
题目大意:求出中,k从1到n的所有解,注意相同的不需要打印。n=1e9.解题思路:首先我们可以暴力枚举k打表找找规律。然后我们发现,首先这个函数是单调递减的。同时,因为我们需要输出答案,所以答案数量不会太多。我们考虑这样子做二分,每次我们从x到n做二分。x为相同中的最小的k。然后我们找到它的右边界到哪里。什么意思呢?若n=108,通过暴力k我们得到如下的.108 54 36...原创 2019-12-10 17:57:46 · 152 阅读 · 0 评论 -
codeforces ECR77 div2 A Game with Traps(二分,线段覆盖)
题目大意:有m个士兵通过长度为n+1的道路,可是道路上有k个陷阱。每个陷阱都有危险程度,若士兵的能力没达到对应危险程度,那么这个士兵不能够通过这个陷阱。你是一个教官,教官能去拆陷阱,每个陷阱有li ri 和di(ri>=li) 分别表示陷阱的位置,拆陷阱的位置。di是危险程度。教官不会被陷阱干掉。问你最多可以带多少个士兵在t秒内完成n+1的道路。解题思路:难点1:首先,我们要想到...原创 2019-11-30 23:34:30 · 286 阅读 · 0 评论 -
codeforces ECR 74 AB-string(找规律)
题目大意:有一字符串,我们定义好的字符串为:它的每一个字符都可以找到那个字符所在的子串的回文串。现在问这个字符串有多少个好的字符串。解题思路:首先,我们考虑事件的对立事件。有多少坏的字符串。我们发现一个字符串是坏的,当且仅当出现一个坏的字符在某个串的左右端点。为什么呢?考虑一个字符串,它中间的字符只可能有两种情况。首先:str[i] == str[i-1] || str[i]== st...原创 2019-11-05 15:50:13 · 167 阅读 · 0 评论 -
codeforces 598 div3 Minimize the Permutation(贪心找规律)
题目大意:有n个排列数。现在定义操作:交换第i和i+1个元素。我们对每个i位置只能操作一次。问经过这种操作后,我们最少能够得到的字典序序列是多少。解题思路:我们贪心从小到大选择数往前挪,我们需要维护一个位置,这个位置是指我们从右到左最多只能移动到这个位置。有没有可能我们想把数字从左运动右呢?这里我们因为是字典序,每次只关心我们的目标数能不能放在前面,所以我们不关心能不能向右挪。另外...原创 2019-11-05 12:37:57 · 168 阅读 · 0 评论 -
codeforces ECR 74 Standard Free2play(找规律)
题目大意:有一座山,山有h层。每一层都有平台。有些平台凸出来,有些平台是凹进去。主角一开始站在h层平台,他的目标是落到第0层。主角能够下山的方式只有一种:让高为x的平台和高为x-1平台的状态取反从而往下跳。状态取反的意思是:原来是凸凹状态互换。主角每次下落层数必须小于等于2,否则摔死。主角还可以买魔法石,魔法石可以让任意一个石头的状态取反。问:主角最少需要购买多少个魔法石能够掉到第0层。...原创 2019-11-04 23:13:51 · 260 阅读 · 0 评论 -
codeforces 597 div2 Constanze's Machine(斐波拉契数列 DP)
题目大意:有一个打字机,每次输入m会输出nn,输入w会输出uu。现在我们有一个字符串,问没经过打字机的原字符串的有多少种。假如不存在可以输出0。解题思路:首先我们必须能够反应到答案是连续u和连续n的对应的种类数的连乘。例如:字符串 nnaaaabbbbuuu那么答案只可能是由连续n或者连续u贡献的。那么这里就想到可以先打个表,这个表F[i]代表u或者n连续出现i个时字符串数的可...原创 2019-11-03 14:31:59 · 238 阅读 · 0 评论 -
codeforces 594 div2 Ivan the Fool and the Probability Theory (DP 推公式)
题目大意:现在有n*m个格子。然后我们可以对这些格子染上黑色或者白色。规定每个格子最多允许相邻1个与它同样颜色的格子,问你我们有多少中不同的染色方案。解题思路:首先考虑1*m的情况。我们可以定义状态:i为这一行的第i个,state为0和1表示染上白色还是黑色,表示走到第i个的并且当前颜色为黑色或者白色时候我们有多少种染色方案。边界条件:为什么可以这样递推呢?我们发现...原创 2019-11-02 22:00:35 · 97 阅读 · 0 评论 -
codeforces 596 div2 p-binary(数位复杂度压缩)
题目大意:已知:同时 ,问k最少为多少。解题思路:首先,我们看到这里有2的n次方,我们考虑能不能从二进制表示下手,我们通过移位来表示:得到公式,很直接的想法是我们让k从小到大进行枚举。那么我们怎么判断这条等式是否能够满足呢?我们知道 xi在这里最小为0,所以n-kp最多可以拆减为n-kp个pow(2,0)相加,所以必须k<=(n-kp),同时k还有一个边界k>...原创 2019-10-28 20:46:44 · 197 阅读 · 0 评论 -
codeforces 580 div2 Shortest Cycle(位操作 图中找圈)
题目大意:有数列An,在数列中若任意两个数a,b。若a & b !=0 ,我们则在a,b之间连一条线。问已知An,形成的最小的圈的节点的个数。解题思路:由于n=1e5,所以我们不能很naive的建图,每个点都查询,否则复杂度到达n^2。这时候,我们发现,从二进制位来看,若三个或以上数字的同一位都是1,那么可以直接输出3。这个key,导致了我们建图的复杂度大大降低为 nlogn ...原创 2019-08-19 15:58:20 · 352 阅读 · 0 评论 -
Codefoces ECR67 Vasya And Array(并查集 adhoc 构造性算法)
题目大意:有一个数列,已知其中有上升必定上升的连续子串,还有非连续上升的连续子串,问这样的数列是否存在。解题思路:首先,我们思考什么时候输出NO,这个问题的几个思考点就是区间重叠和区间不重叠,所以我们从这里入手的话发现,若非连续上升区间在必定上升区间中,此时一定要输出NO,其它情况都可以输出YES,要实现这个,我们可以用并查集,把上升区间的子串作为一个集合,若非连续上升区间的元素都在这...原创 2019-07-02 11:27:04 · 296 阅读 · 0 评论 -
codeforces 570 div3 Computer Game
题目大意:额,题意有点复杂,大概意思就是我们要统计他玩了几个回合,注意哦 边充电边玩 和 玩是不同的状态。总共有n个回合,假如能全部玩完,我们则继续,否则输出-1。玩完的定义是:已知 k>a>b,总电量为k,玩一回合耗电量a,边充边玩耗电量b,而且有个约束,我们规定剩余电量>a才能玩,剩余电量大于b才能边充边玩。假设我们玩了n1回合,边充边玩了n2回合,玩完就是 n1+n2&...原创 2019-06-27 22:44:31 · 255 阅读 · 0 评论 -
codeforces 572 div2 Candies! (倍增 DP)
题目大意:有一个数列an,数列长度必定为2^k临近的两个数ai ai+1可以组合成(ai + ai+1)%10的一个数字。然后得到一个新的数列,递归完成上述操作,直到数列只有一个数。在得到一个新的数字的同时,若ai + ai+1大于10,我们将得到一个糖,现在有q个query,每个query让指定区间递归完成上述操作,问总共得到多少个糖。每个query的长度满足2的次幂。解题思路:一...原创 2019-07-14 13:44:45 · 265 阅读 · 0 评论 -
codeforces 573 div2 Tokitsukaze and Discard Items(线性操作)
题目大意:有一个数列,每次去掉前某一个page里面的所有指定元素,删除后,后面的元素可以往前蹭。每个page固定包含一定数量的元素。问:需要执行多少次删除操作。解题思路:很自然的最naive 的做法是:删除指定区间的时候,后面的所有元素都改变自己的位置。但是这样会导致o(m^2)。其实这里有一个special page,这个special page明确了我们每次只可以取部分元素,这使...原创 2019-07-14 21:32:15 · 353 阅读 · 0 评论 -
codeforces 562 div2 Increasing by Modulo(贪心,二分)
题目大意:有一串数字An,这些数字的范围是0-m-1,然后我们有一种操作:每次可以选择任意个数字,每个数字Aith可以Aith=(Aith+1)%m问我们最少对每个数字 进行多少次的操作,可以使得这些数字单调不减。每个数字的操作次数相同。解题思路:这种贪心题一般都有个特点,就是往往有一个最优的边界,然后我们证明可以达到这个最优边界。在这里我们得出最多m-1次操作可以使得这些数字单调...原创 2019-07-07 13:01:36 · 177 阅读 · 0 评论 -
Codeforces Global Round 4 prime graph(素数筛 构建型算法)
题目大意:给你一个n,问能不能产生一个图,变数是素数,同时每个顶点的度数都是素数解题思路:构造性算法,有一个major hints就是[n,3/2n]区间内必有一个质数。所以我们可以构造一个圈,然后假如这个圈不是质数的话,我们连接边i<->i+n/2,构造出最临近的一个质数即可。这种构造可以满足题目的要求。至于素数筛,可以看这个网站的介绍: https://www.geek...原创 2019-07-24 13:10:28 · 181 阅读 · 0 评论 -
codeforces 576 div2 mp3(贪心,构造性算法)
题目大意:已知数列an,同时我们需要满足约束 其中n为数列长度,k为an中不同类型的数字的数目,I为题目给定的输入常数,我们可以对数列设定一个区间[l,r],an中小于l的数字变为l,大于r的数字变为r,问:区间怎么设置,我们可以满足约束同时 改变尽可能少的数列元素。解题思路:首先呢,我们对an排个序,统计相同元素的个数,得到an有多少个不同的数,例如[5,5,3,3,7],只有三种不...原创 2019-07-31 08:47:31 · 334 阅读 · 2 评论 -
codeforces 576 div2 Welfare State(线段树,懒惰传播)
题目大意:有一个数列an,我们要执行任一如下操作q次,操作一:每次当数列中的值小于k时,所有小于k的值换为k。操作二更新第n个数。数据范围:n<=1e5 q<=1e5解题思路:使用线段树,其中操作二是和一般线段树参不多,因为线段树单点更新的复杂度为log(n),但是操作一假如没搞好,复杂度会达到n*log(n)*m,最后喜提TLE。这时候我们就要考虑懒惰...原创 2019-07-31 16:03:07 · 182 阅读 · 0 评论 -
codeforces 567 div2 flag
题目大意:就是有一个棋盘,棋盘上面最多有26种颜色,相邻行的同样颜色的小格子可以组成大格子(每个大格子理解为宽度为1,长为h的小矩形),相同高度的上下相邻不同颜色的连续3个大格子可以组成一面旗,问棋盘上有多少旗。解题思路:由于时面向题解写的代码,这里就简单的将codeforces上的内容搬一下。简要来说,就是暴力。这种暴力题的难点就是,我们需要枚举什么。而且这样枚举不能超复杂度,不...原创 2019-06-26 15:57:36 · 234 阅读 · 0 评论