摘要: 新博客地址:http://lowsfish.com/ 阅读全文
posted @ 2015-05-04 11:20 lowsfish 阅读(119) 评论(1) 推荐(1) 编辑
摘要: 转自tangjz的博客...基础算法模拟搜索广度优先搜索(BFS)优化:双向BFS深度优先搜索(DFS)优化:折半DFS迭代加深搜索(IDS)启发式搜索(Astar)优化:IDAstar优化:剪枝、位运算排序冒泡排序/选择排序基数排序/桶排序计数排序插入排序/希尔排序快速排序归并排序/求逆序对数堆排... 阅读全文
posted @ 2015-02-23 10:11 lowsfish 阅读(348) 评论(0) 推荐(1) 编辑
摘要: 题意:带修改不带插入的区间k大。裸的可持久化线段树。。由于有修改,要用树状数组维护。其它跟不带修改的可持久化线段树一样。因为我没有找到网上用指针写的代码。。CLJ写这道题也用的不是可持久化线段树,于是我就没有任何模板可以参照。。就参考网上数组版的自己脑补了一个指针版。。你们就可以看到代码优美度下降了... 阅读全文
posted @ 2015-04-17 17:18 lowsfish 阅读(152) 评论(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 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 题意:求一个串中可重叠至少出现m次的最长子串,并且求出该串最后一次出现的起始位置。找了一下网上并没有SAM做法的题解。。我来说一下好了首先每个SAM上的结点需要多保存两个值:cnt和right。cnt代表该状态right集合大小,right值是right集合中最大的那个值(right集合定义见CLJ... 阅读全文
posted @ 2015-04-14 12:58 lowsfish 阅读(352) 评论(0) 推荐(0) 编辑
摘要: 题意:求一棵边权全都是1的树上,集合大小为3,且集合内点两两距离相等的集合个数。NOIP2014 D1T2加强版。。通过分析发现,满足这样的点对一定是在有根树中深度相同,且不再同一棵以根节点儿子为根的子树中。于是我们枚举根。。三个点的集合个数是由2个点的集合个数转移过来的。。2个又是由一个转移过来的... 阅读全文
posted @ 2015-04-13 15:47 lowsfish 阅读(365) 评论(0) 推荐(0) 编辑
摘要: 题意:给一个串s,按顺序一个个加入到序列里面。输出每次加入之后序列中的本质不同的回文串个数。回文自动机模板题- -extend函数里面,如果那个if进去了,就代表多了一个本质不同的回文串。 1 #include 2 #include 3 const int MAXN=100000+5; 4 cons... 阅读全文
posted @ 2015-04-12 00:19 lowsfish 阅读(131) 评论(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 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个字符串init,要求你支持两个操作(1):在当前字符串的后面插入一个字符串(2):询问字符串s在当前字符串中出现了几次?(作为连续子串) 必须在线。构建SAM,再用LCT维护Parent Tree。每次新加一个结点,对它的祖先的Right集合大小都加了1,(Right集合的定义见CL... 阅读全文
posted @ 2015-04-10 18:21 lowsfish 阅读(155) 评论(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 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 题意:给一个初始序列,有n个数。现在要对它们进行排序。第i次通过区间翻转将第i小的数翻转到正确的位置上(即第i位),输出旋转前i的位置。(语死早,凑合理解一下。。)思路就是每次将第i小的数splay到根,统计一下再删除。答案就是左子树大小加上已删除的数的个数。然后这题是有可能出现重复的数字的。。有重... 阅读全文
posted @ 2015-03-16 23:56 lowsfish 阅读(174) 评论(0) 推荐(0) 编辑