
线段树
文章平均质量分 50
赤兔码
我服了
展开
-
E.Trees of Tranquillity
E. Trees of Tranquillity 题意: 多组输入,给两个都是n个节点的树A和树B 然后给一个n个节点的图,然后如果两个点x和y同时满足以下两个条件则连边, 1.在树A中x是y的祖先或者y是x的祖先,2,在树B中x和y谁也不是谁的祖先 求图的最大团的大小 n<=3e5 输入的树边为a2到an,ai代表i的父亲是ai,1<=ai<i 思路: A树上的肯定在一条链上,B树则为dfs序的不重叠区间 这个题的巧妙之处在于输入ai<i这个限制,这样一条链上的各个点标号一定是递增原创 2021-05-25 23:42:53 · 484 阅读 · 0 评论 -
Codeforces Round #721 (Div. 2) E - Partition Game
E - Partition Game 题意:给一个长度为n的数组,将其分成k段,每段的权值定义为这段数组中每个不同的数的cost和,对于一个数的cost为这个数在这一段中最后一次出现和第一次出现的距离差。求分成连续k段的最小权值和。 昨天打cf看了一下这个题,和银川B好像,于是就想能不能巧妙的dp一下,想了挺长时间也没有dp的思路,感觉现在这种题就像我的梦魇似的,银川B题因为比赛前一天看了很多数据结构的题导致完全没想dp,而这个题又因为银川B题的折磨也没想数据结构,真的感觉现在处于一个知识量和思维和做题状态原创 2021-05-21 12:08:23 · 229 阅读 · 0 评论 -
Codeforces Round #317 [AimFund Thanks-Round] (Div. 1) D. Campus(Kruskal重构树 两个线段树加两个Kruskal重构树)
D. Campus 题意: 思路:两个线段树加 Kruskal乱搞,第一个单秒的3100分的题,无敌,这题稍微卡内存,线段树只能开三个变量。总的来说,这个题恶心人。 250行,真恶心。 #include<iostream> #include<cstdio> #include<vector> using namespace std; const int MAX_N=1001000; struct skt{ char s[2]; int x,y; }qy[.原创 2020-10-14 23:16:16 · 376 阅读 · 1 评论 -
Codeforces Round #668 (Div. 2) E
题意: 给出一个长度为 n 的数列 a ,规定当 a[ i ] == i 时,位置 i 可以被删除掉,后面位置会合并上来,现在需要回答 m 次询问,每次询问会问禁用掉后面 x 个数字和后面的 y 个数字后,最多可以删除掉多少个数字,每个询问都相互独立,举个例子比较好看: 思路: 首先询问给出的可以转化为给出l,r,然后对于一个区间的询问有一个很明显的贪心,就是每次把能去掉的最右边的去掉,这样就可以使得去掉的个数最大化。但是很明显多组询问就爆了,这时候就考虑怎么优化,其实对于一个数a[i]有三种情况: 1.a原创 2020-09-07 23:00:53 · 258 阅读 · 0 评论