
codeforces题解
长沙橘子猫
这个作者很懒,什么都没留下…
展开
-
Educational Codeforces Round 47 G. Allowed Letters
G. Allowed Letters题意:给一个长度为nnn的字符串,字符串元素范围为aaa到fff,有mmm个限制条件,每个条件限制了某位置只能填指定元素,你要给字符串重新排列,求排列后字典序最小的字符串。解法:不妨把重排的字符串看成二分图的左边集合,原字符串看成二分图的右边集合,我们来给它们进行字典序最小的二分图最大匹配,我们可以从前往后枚举每个位置填的最小字符,然后用hallhallh...原创 2019-11-11 17:15:02 · 487 阅读 · 0 评论 -
Codeforces Round #267 (Div. 2) E. Alex and Complicated Task 线段树
E. Alex and Complicated Task题意:给一个长度为5e5的数组a,让你选择最长的子序列b,使得b的长度为4的倍数,且b[4k+1] = b[4k+3],b[4k+2] = b[4k+4]。思路:不知为啥,感觉这题很水,难度系数却标了2900,我们枚举a数组,判断ai是否能成为b[4k],用两个map存一下每个数出现次数,以及每个数最后出现的位置,如果 ai 出现了...原创 2019-06-26 18:01:10 · 295 阅读 · 0 评论 -
Codeforces Round #265 (Div. 1) E. The Classic Problem 最短路+线段树+hash
E. The Classic Problem题意:有一个无向图,每条边的权值为2^x(0<=x<=1e5),求 s 到 t 的最短路。思路:最短路好搞,关键是这个权值不好比较大小,由于x<=1e5,但是我们发现从一个点 u 到 v,其距离只增加了2^a[x],那么我们可以用可持久化线段树保存新增的这个信息,每个点的最短路都用一颗线段树保存,线段树第 i 个叶子节点保存的是...原创 2019-04-09 00:26:36 · 312 阅读 · 0 评论 -
Educational Codeforces Round 62 F. Extending Set of Points 线段树分治+可撤销并查集
F. Extending Set of Points题意:有q次操作,每次操作 (x ,y),如果S集合有(x ,y),就删除这对数,如果没有就插入这对数,然后询问S集合在R规则下一共有多少对数(R规则:如果R集合中有(x1,y1) (x1,y2)(x2,y1),且没有(x2,y2),那么在计数的时候会加上(x2,y2)这对)。思路:第一次写线段树分治+可撤销并查集,代码借鉴:幽蝶,如果一...原创 2019-03-27 02:20:22 · 352 阅读 · 0 评论 -
Codeforces Round #264 (Div. 2) E. Caisa and Tree
E. Caisa and Tree//最近工作繁忙,决定先不通刷cf套题,换刷难度系数2000以上的题题意:给一颗以1为根的树,有q次操作,1 v表示求根到v权值与av不互质的深度最大的点。2 u w 表示把节点 u 的权值改为w,最多50次修改。思路:我应该是第一个用主席树切这个题的吧....把每个节点的权值质因数分解,每颗线段树 rt[i] 存从根到 i 节点,每个质因数 x 节点...原创 2019-03-26 20:13:16 · 227 阅读 · 0 评论 -
CodeForces - 1017D The Wu CodeForces 打表预处理
题意:给你m个长度为n的01串,和n个价值wi,代表如果一个01串和某个给定的01串如果第i位相同,那么这两个字符串所匹配的值就+wi,有q个询问,每次询问一个01串 和一个数k,求该串与哪些给定的串匹配值不超过k。输出其数量。这个题数据量如果小,就是个水题,但是n是12,m和q都是5e5,k最大为100,数据量有点大,但是还是水题,为什么,因为01串最长才12,一共也才4000种状态,k最大...原创 2018-08-09 19:32:52 · 264 阅读 · 0 评论 -
1083E The Fair Nut and Rectangles 斜率优化dp
E. The Fair Nut and Rectangles题意:给你n个左下角为原点的矩形,每个矩形有权值ai,你可以拿任意一些矩形组合起来,使得它们的总面积-它们的总权值最大。(不存在一个矩形完全包含另一个矩形)。思路:将矩形按照 x 从小到大排序(一个矩形若x更大,则其y更小),设d[ i ]为前 i 个矩形中必用 第 i 个矩形所能得到的最大值。很显然:d[ i ]=max ( d...原创 2018-12-12 09:35:58 · 451 阅读 · 0 评论 -
2018-2019 ICPC, NEERC, Northern Eurasia Finals K. King Kog's Reception 线段树
K. King Kog's Reception题意:有q个操作,第 i 次操作若为 + t d,表示在 t 这个时刻插入一个耗时为 d 的骑士,若 - i 表示删除第 i 个操作,若 ? t 表示查询如果我要在 t 时刻进行进行活动,至少要排多久的队。思路:设线段树sum和mx分别表示区间内耗时总长和该区间至少要到mx时刻才能处理完区间内所有骑士,那么两个区间合并时显然mx[ o ]=m...原创 2018-12-08 09:04:47 · 603 阅读 · 0 评论 -
2018-2019 ICPC, NEERC, Northern Eurasia Finals A. Alice the Fan dp
A. Alice the Fan题意:告诉你A和B分别得了多少分,求A和B的大比分,要求A的大比分尽可能优先,单轮比赛规则:定义一个限制K,前四轮K为25,第五轮K为15,如果一方得到了K分,另一方得分<=K-2分,则该轮比赛结束,如果一方得分>K,那么另一方必须与之相差只能为2才能是的这轮比赛结束,每轮比赛得分高的一方获得一个大比分。双方大比分只要有一人先得了3分,总比赛终止。...原创 2018-12-07 19:22:45 · 669 阅读 · 0 评论 -
Codeforces Round #521 (Div. 3) F2 单调队列dp
F2. Pictures with Kittens (hard version)题意:给你n个有权值的点,你从位置0开始,每次操作可以跳到当前位置+k范围内的点并获得其权值(不能跳到原点),要求必须操作x次,且最后的位置+k必须要大于n,求可以获得的最大权值。思路:设d[ i ][ j ]为经过 j 次操作到达第 i 个位置所获得的最大权值,方程很容易想到 d[ i ][ j ]=max(...原创 2018-11-18 11:40:28 · 219 阅读 · 0 评论 -
Codeforces Round #522 div 2 C. Playing Piano dp
C. Playing Piano题意:给你一个a数组,你要按要求构造等长的b数组,如果a[ i ]>a[ i-1 ],那么b[ i ]>b[ i-1 ],若a[ i ]<a[ i-1],那么b[ i ]<b[ i-1 ],若a[ i ]=a[ i-1 ],那么b[ i ]!=b[ i-1 ],且b数组最大不超过5,最小为1。思路:一个很有意思的题,设d[ i ][ ...原创 2018-11-19 19:14:02 · 422 阅读 · 0 评论 -
codeforces 1076E Vasya and a Tree 树上主席树
E. Vasya and a Tree题意:给你一棵1为根节点的树,初始每个节点权值为0,有m次操作,每次操作 v d x,表示将以v为根的子树,深度不超过d的所有节点加上x。思路:从深度为1的根节点开始遍历,到了深度为dep的v节点,若是该节点有操作 d x,那么以该节点为根的主席树就要在dep+d的点加上一个权值x,然后怎么计算该点的答案呢,该点的答案就是该点的主席树区间 [ dep,...原创 2018-11-14 15:15:47 · 463 阅读 · 0 评论 -
codeforces 1062E Company dfs序+线段树+lca
E. Company题意:给你一颗树,有q次操作,每次操作询问一个区间 l r,你可以删除区间内任意一个节点,使得这个区间的lca最大,并输出删除的节点和区间lca。(每次操作独立不影响下一次操作)思路:我们可以先在树上走一遍dfs序,每次询问的区间,决定lca的肯定是dfs序最大和最小的两个点,因此我们只要通过线段树找到区间内最小的la和次小的a,最大的rb和次大的b,然后比较lca(l...原创 2018-11-15 15:26:42 · 1372 阅读 · 1 评论 -
codeforces 1044D Deduction Queries 并查集
F. Deduction Queries题意:有q个操作,有一个下标从0到2^30-1的数列,1 l r x,表示下标从 l 到 r 的子序列异或值为 x,2 l r 表示要求下标从 l 到 r 的子序列的异或值,不过题目给的 l r x都不是真正的值,真正的值是是输入的值异或last,last表示每次操作后的答案的绝对值,初始值是0。思路:带权并查集,第二次了还是不太会做,真是菜鸡如我啊...原创 2018-11-08 19:21:47 · 325 阅读 · 0 评论 -
codeforces 1044C Optimal Polygon Perimete
E. Optimal Polygon Perimeter题意:给你n个点的二维坐标,你可以任意选择一些点构成k边形(凸多边形),求出最大的k边形的周长(k=3,4,5,...n),定义两点的距离为曼哈顿距离。思路:先看下图: 由于这里的距离定义为曼哈顿距离,所以我们可以发现,这个6边形的周长等于这个矩形周长,而我只需要最上面的点,最下面的点,最左边以及最右边的点,也可以围...原创 2018-11-08 18:55:21 · 369 阅读 · 0 评论 -
codeforces 600E. Lomsat gelral
E. Lomsat gelral题意:给一棵树,每个节点有一个编号,求每颗子树最多编号的和。线段树合并模板题#include<cstdio>#include<algorithm>#include<vector>using namespace std;typedef long long ll;const int maxn=1e5+10;v...原创 2018-11-13 21:29:41 · 302 阅读 · 0 评论 -
codeforces 1044F DFS dfs序+线段树
F. DFS题意:给一颗初始树,然后有q次操作,每次操作一对点,如果这对点有边,就删除边(保证不删除初始的树边),否则,就加一条边,接下来你可以从某个点dfs搜索,如果搜索出来的边和初始树的边一样,那这个点就是好的点,求每次操作后有多少个好的点。思路:学习某位ac大佬的,首先对初始的树走一遍dfs序,l[u]表示u这个节点的dfs序号,r[u]表示以u为根的子树的序号最大的那个点序号,接下...原创 2018-11-09 11:31:31 · 616 阅读 · 0 评论 -
Mail.Ru Cup 2018 Round 1 E. Chips Puzzle
E. Chips Puzzle题意:给你第一个n*m由01串构成的矩阵,你可以把x1行y1列的01串最后一个字符加到x2行y2列第一个字符上,要求你把第一个矩阵变成第二个输入的矩阵,输出操作过程。2.思路:刚开始看题完全不会写,翻了翻别人的ac代码,终于是找到了一份看懂的代码了,因此写下了题解(别人的思路),这个构造题,直接把第一个矩阵变成第二个矩阵太难,但是我可以把第一个矩阵的所有0移动...原创 2018-10-19 21:44:26 · 757 阅读 · 0 评论