随笔分类 -  BZOJ

摘要:题意:带修改不带插入的区间k大。裸的可持久化线段树。。由于有修改,要用树状数组维护。其它跟不带修改的可持久化线段树一样。因为我没有找到网上用指针写的代码。。CLJ写这道题也用的不是可持久化线段树,于是我就没有任何模板可以参照。。就参考网上数组版的自己脑补了一个指针版。。你们就可以看到代码优美度下降了... 阅读全文
posted @ 2015-04-17 17:18 lowsfish 阅读(161) 评论(0) 推荐(0)
摘要:题意:一个长度为n的序列a,设其排过序之后为b,其中位数定义为b[n/2],其中a,b从0开始标号,除法取下整。给一个序列,并进行一些询问。每次询问起点在[a,b],终点在[c,d]的序列的中位数。题解:首先有一个思路:对于一个序列S,假设它的中位数是m,则S中>=m的元素个数一定>=n那么对于一个... 阅读全文
posted @ 2015-04-15 17:59 lowsfish 阅读(197) 评论(0) 推荐(0)
摘要:题意:求一棵边权全都是1的树上,集合大小为3,且集合内点两两距离相等的集合个数。NOIP2014 D1T2加强版。。通过分析发现,满足这样的点对一定是在有根树中深度相同,且不再同一棵以根节点儿子为根的子树中。于是我们枚举根。。三个点的集合个数是由2个点的集合个数转移过来的。。2个又是由一个转移过来的... 阅读全文
posted @ 2015-04-13 15:47 lowsfish 阅读(378) 评论(0) 推荐(0)
摘要:这题原来的做法是啥我不知道,我只知道自从回文树出来后这题就变成了模板题。。 1 #include 2 #include 3 #include 4 const int MAXN=300000+5; 5 const int SIGMA_SIZE=26; 6 typedef long long LL; 7... 阅读全文
posted @ 2015-04-11 23:11 lowsfish 阅读(255) 评论(0) 推荐(0)
摘要:题意:给你一个字符串init,要求你支持两个操作(1):在当前字符串的后面插入一个字符串(2):询问字符串s在当前字符串中出现了几次?(作为连续子串) 必须在线。构建SAM,再用LCT维护Parent Tree。每次新加一个结点,对它的祖先的Right集合大小都加了1,(Right集合的定义见CL... 阅读全文
posted @ 2015-04-10 18:21 lowsfish 阅读(174) 评论(0) 推荐(0)
摘要:对边按a权值排序,按b权值建LCT,按排序后的顺序依次加边。如果加边后形成环则删除环上最大的边。如果起点终点联通则更新答案。 1 #include 2 #include 3 #define rep(i,n) for(int i=0;i>1; 7 struct Node{ 8 int... 阅读全文
posted @ 2015-03-30 18:05 lowsfish 阅读(252) 评论(0) 推荐(0)
摘要:题意:给一个初始序列,有n个数。现在要对它们进行排序。第i次通过区间翻转将第i小的数翻转到正确的位置上(即第i位),输出旋转前i的位置。(语死早,凑合理解一下。。)思路就是每次将第i小的数splay到根,统计一下再删除。答案就是左子树大小加上已删除的数的个数。然后这题是有可能出现重复的数字的。。有重... 阅读全文
posted @ 2015-03-16 23:56 lowsfish 阅读(182) 评论(0) 推荐(0)
摘要:题目大意:要求维护一个序列,支持插入,删除,修改(将一段区间内的数全部设置为c),区间翻转,区间求和,区间最大和。splay维护。其中区间最大和用一个mmax值来记录,需要用lmax和rmax来辅助(代表前缀最大和和后缀最大和)。mmax有三种情况:区间全部在左子树中,区间全部在右子树中,区间跨越左... 阅读全文
posted @ 2015-03-16 18:13 lowsfish 阅读(153) 评论(0) 推荐(0)