摘要:
新博客地址:http://lowsfish.com/ 阅读全文
摘要:
转自tangjz的博客...基础算法模拟搜索广度优先搜索(BFS)优化:双向BFS深度优先搜索(DFS)优化:折半DFS迭代加深搜索(IDS)启发式搜索(Astar)优化:IDAstar优化:剪枝、位运算排序冒泡排序/选择排序基数排序/桶排序计数排序插入排序/希尔排序快速排序归并排序/求逆序对数堆排... 阅读全文
摘要:
题意:带修改不带插入的区间k大。裸的可持久化线段树。。由于有修改,要用树状数组维护。其它跟不带修改的可持久化线段树一样。因为我没有找到网上用指针写的代码。。CLJ写这道题也用的不是可持久化线段树,于是我就没有任何模板可以参照。。就参考网上数组版的自己脑补了一个指针版。。你们就可以看到代码优美度下降了... 阅读全文
摘要:
题意:一个长度为n的序列a,设其排过序之后为b,其中位数定义为b[n/2],其中a,b从0开始标号,除法取下整。给一个序列,并进行一些询问。每次询问起点在[a,b],终点在[c,d]的序列的中位数。题解:首先有一个思路:对于一个序列S,假设它的中位数是m,则S中>=m的元素个数一定>=n那么对于一个... 阅读全文
摘要:
题意:求一个串中可重叠至少出现m次的最长子串,并且求出该串最后一次出现的起始位置。找了一下网上并没有SAM做法的题解。。我来说一下好了首先每个SAM上的结点需要多保存两个值:cnt和right。cnt代表该状态right集合大小,right值是right集合中最大的那个值(right集合定义见CLJ... 阅读全文
摘要:
题意:求一棵边权全都是1的树上,集合大小为3,且集合内点两两距离相等的集合个数。NOIP2014 D1T2加强版。。通过分析发现,满足这样的点对一定是在有根树中深度相同,且不再同一棵以根节点儿子为根的子树中。于是我们枚举根。。三个点的集合个数是由2个点的集合个数转移过来的。。2个又是由一个转移过来的... 阅读全文
摘要:
题意:给一个串s,按顺序一个个加入到序列里面。输出每次加入之后序列中的本质不同的回文串个数。回文自动机模板题- -extend函数里面,如果那个if进去了,就代表多了一个本质不同的回文串。 1 #include 2 #include 3 const int MAXN=100000+5; 4 cons... 阅读全文
摘要:
这题原来的做法是啥我不知道,我只知道自从回文树出来后这题就变成了模板题。。 1 #include 2 #include 3 #include 4 const int MAXN=300000+5; 5 const int SIGMA_SIZE=26; 6 typedef long long LL; 7... 阅读全文
摘要:
题意:给你一个字符串init,要求你支持两个操作(1):在当前字符串的后面插入一个字符串(2):询问字符串s在当前字符串中出现了几次?(作为连续子串) 必须在线。构建SAM,再用LCT维护Parent Tree。每次新加一个结点,对它的祖先的Right集合大小都加了1,(Right集合的定义见CL... 阅读全文
摘要:
对边按a权值排序,按b权值建LCT,按排序后的顺序依次加边。如果加边后形成环则删除环上最大的边。如果起点终点联通则更新答案。 1 #include 2 #include 3 #define rep(i,n) for(int i=0;i>1; 7 struct Node{ 8 int... 阅读全文
摘要:
题意:给一个初始序列,有n个数。现在要对它们进行排序。第i次通过区间翻转将第i小的数翻转到正确的位置上(即第i位),输出旋转前i的位置。(语死早,凑合理解一下。。)思路就是每次将第i小的数splay到根,统计一下再删除。答案就是左子树大小加上已删除的数的个数。然后这题是有可能出现重复的数字的。。有重... 阅读全文