随笔分类 - 数据结构-线段树
摘要:题目 题解 题目给了很重要的性质,就是保证询问的[l,r]是合法括号串(没有的话可能要莫队+二分找?) 假设给出的s串是合法括号序,按照树转括号序的方法逆向转成树,用左括号下标作为树上点的标号 例如 ()(()()) ,则有root-1, root-3, 3-4, 3-6,方法是维护左括号的栈,加入
阅读全文
摘要:一开始想给i只加一条ai的链,然后发现不太对,取中点取到非原树上的点,并且还要特判u=v 然后~~看题解~~发现加两条链就都解决了 然后变成动态直径问题: https://blog.csdn.net/weixin_62887323/article/details/128667759 大概是求出欧拉序
阅读全文
摘要:难度D>E>G>F>B>C>A A 当n>=3时都可以先把min换到位置2,然后随便找两个换,直到n=2时换12,输出min 否则n=2时只能直接换,输出a[2] B 我写的是a+b*c,b,c,当然也可以直接a+b+c,b+c,c C 随便找一个不合法的对(i,j)和(i,j+1),则显然要动至少
阅读全文
摘要:结论1:若两个优美区间相交不包含,则二者重合部分也是优美区间 证明1:设两个区间为A和B,则A-(A∩B)的部分一定是A在数域上的前缀/后缀(否则会有空,数字不重复,加上B-(A∩B)后不能填补空缺,不是优美区间),所以A-(A-(A∩B))=A∩B是优美序列 做法: 枚举优美区间的右边界R,设其向
阅读全文
该文被密码保护。
摘要:题目大意 给出一棵树,每条边边权为0/1,支持动态翻转边权,求每次操作后的最长和为偶数的链长 n<=5e5,5s 题解 lkyyds 还剩40min时胡乱思考,rush了3k然后假了 后来dyp点了一下发现最长链的两个端点一定有至少一个是直径端点 证明:如果直径的操作次数为偶数那么直接选直径,否则考
阅读全文
摘要:题目大意 题解 好题 设0的个数为z,一个显然的结论是答案上界为z/2 以第z/2个0为分界划开,左边的称为L右边的称为R,那么L中右侧和R中左侧的0个数>=z/2 可以发现这样转化之后一个点只需要考虑在其所在集合的连边,即L集考虑向左的边R集考虑向右的边 因为总数<=z/2而任意一边的0个数>=z
阅读全文
摘要:题目大意 题解 一开始想枚举每段的分界再判断,然而不好搞 实际上把每个点到两边的距离设为(x,y),类似https://www.cnblogs.com/gmh77/p/12813589.html,变为用一条折线把所有点分成两个集合 直接dp折线,转移时要么继承上一行位置,要么转移到前面的某个点,线段
阅读全文
摘要:题目大意 题解 不难但是因为字符串太菜所以想了很久 排行榜上跑得快的一些做法假了,不知道有没有更简单的做法 结论:存在一种最优序列,使得Si是Si-1的后缀,证明把任意一种最优的不断删掉末尾将其顶住 也可以同时满足开头但是不需要,这样可以写个O(n^2)KMP暴力来拍 把SAM建出来,同一个点上的串
阅读全文
摘要:题目描述 N,Q<=5e4 题解 基础线段树 先算al<=ar的,之后取反再算一次 设L[i]表示往左第一个大于当前的位置+1,R[i]是往右小于的-1 那么区间[l,r]满足条件当且仅当R[l]>=r且L[r]<=l 枚举右端点,在x处维护[x,x~r]的最大值,考虑r-1->r的变化 加入的区间
阅读全文
摘要:题目描述 n,m<=5e5,x<=1e3 题解 想了一下就想出了log^2的,之后刚了一个下午尝试去掉一个log结果发现把set改成优先队列就过了 log^2的自然做法: 在线段树上set里挂加进去的数,如果下传的话时间会假,因此不下传标记 弹栈就单点查询,把经过的所有区间内时间最大的弹掉,第二大的
阅读全文
摘要:备忘 以后有了再补上希望永远都不要有 线段树区间修改&询问 1、修改后要下传,以免询问根节点 2、合并时要考虑标记,可以连标记一起合并或者先把儿子下传 3、区间加要注意乘len LCT 1、rotate时若父亲连向祖父的边是虚边就不用修改祖父的儿子 2、link&cut时makeroot(x)后要a
阅读全文