随笔分类 -  可持久化

[CF1037H]Security
摘要:题意 https://codeforces.com/contest/1037/problem/H 思考 贪心的思路是,尽可能多地找到读入串的一段前缀,然后再添上一个字典序比较大的字符。 先对原串建立SAM,考虑到有区间限制,需线段树合并维护endpos集合。 对于一个询问,我们现在SAM上找对它的前 阅读全文
posted @ 2019-08-25 21:22 GreenDuck 阅读(198) 评论(0) 推荐(1)
一类子树问题的总结
摘要:以下问题均允许离线,根节点都为1。 prob1 : 一棵有根树,要求线性时间求出任意子树的权值和。 prob2 : 一颗有根树,要求O(nlogn)求出与u距离不超过x且在u子树中的节点的权值和。 prob3 : 一颗有根树,要求O(nlogn)求出与u距离不超过x且在u子树中的不同颜色种类个数,颜 阅读全文
posted @ 2019-03-28 19:41 GreenDuck 阅读(391) 评论(0) 推荐(0)
19_03_28校内训练[相似字符串]
摘要:题意 给出一个长度为n的序列,有m次询问,每次询问[l1,r1],[l2,r2]的区间,问排序后相同位置的不同数字个数是否小于等于1。如[1,3,2,2],[1,3,2,3]排序后为[1,2,2,3]和[1,2,3,3],不同的有2个,不符合。n,m≤1,000,000,数的大小≤50,000。 思 阅读全文
posted @ 2019-03-28 18:32 GreenDuck 阅读(201) 评论(0) 推荐(0)
洛谷 P3899 [谈笑风生]
摘要:简化题意 m次询问,每次询问x的子树中,与x节点距离不超过y的节点的子树和。n,m≤300,000。 思路 按照dfs序排序,每次将一个点的答案塞到第depu的位置,这样得到一个前缀和,每次询问作减法即可。 可持久化线段树。 代码 1 #include<bits/stdc++.h> 2 using 阅读全文
posted @ 2019-03-27 20:50 GreenDuck 阅读(144) 评论(0) 推荐(0)
CF1093E [Intersection of Permutations]
摘要:题意 给定整数n两个1-n的排列a,b,有m次操作:若opt==1,则有 l1 r1 l2 r2,求出a:[l1,r1]与b:[l2,r2]中相同元素的交的大小。若opt==2,则有 x y,交换b排列中的 第x位与第y位。 n,m≤200,000 思考 只改变b排序中元素位置,考虑每次询问a中l1 阅读全文
posted @ 2019-03-23 21:13 GreenDuck 阅读(190) 评论(0) 推荐(0)