摘要:
三分可以用来求单峰函数的极值。 首先对一个函数要使用三分时,必须确保该函数在范围内是单峰的。 又因为凸函数必定是单峰的。 证明一个函数是凸函数的方法: 所以就变成证明该函数的一阶导数是否单调递增,或者其二阶导数是否大于0。 阅读全文
摘要:
注意:1,内存限制,所以需要回收删除的点 2,当前节点的左连续区间和最大值=max(左子树的左连续区间和最大值,左子树的总和+当节点的值+max(右子树的左连续区间和最大值,0));右连续区间和最大值同理 当前节点的区间和最大值=max(左子树的区间和最大值,max(右子树的区间和最大值,max(左 阅读全文
摘要:
#include #include const int N=1e6+11; int next[N]; void getnext(char *s){ next[0]=0; for(int i=1,j=0;s[i];i++){//j为next[i-1] while(j>0&&s[i]!=s[j]){ j=next[j-1]; ... 阅读全文
摘要:
1-n的序列,有两种操作: 1,将一段区间翻转 2,将一段区间切下来放到剩余序列的第C个数后 采用延迟更新的方法维护区间的翻转,并维护一个size域。 添加一个最大点和一个最小点,防止出界 翻转时,将第L-1个点伸展到跟,再将第R+1个点伸展到L-1的右子树,这时R+1的左子树就是要翻转的区间,加上 阅读全文
摘要:
单点更新,区间最值,用来练Splay刚好。 将位置作为排序的规则,利用Splay不会改变顺序的特点,求某一段区间[l,r]的最值时,将l-1伸展到根,将r+1伸展到l-1的右子树,这时r+1的左子树就是要求的区间。维护一个最值即可。 阅读全文
摘要:
http://www.cnblogs.com/DrunBee/archive/2012/08/12/2634194.html 阅读全文
摘要:
对于一个前缀表达式的求值而言,首先要从右至左扫描表达式,从右边第一个字符开始判断,如果当前字符是数字则一直到数字串的末尾再记录下来,如果是运算符,则将右边离得最近的两个“数字串”作相应的运算,以此作为一个新的“数字串”并记录下来。一直扫描到表达式的最左端时,最后运算的值也就是表达式的值。例如,前缀表 阅读全文
摘要:
本文是根据郭家宝的文章《Treap的原理及实现》写的。 阅读全文
摘要:
如果两个顶点可以相互通达,则称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。强连通图有向图的极大强连通子图,称为强连通分量(strongly connected components)。 下图中,子图{1,2,3,4}为一个强连通分量, 阅读全文
摘要:
priority_queue调用 STL里面的 make_heap(), pop_heap(), push_heap() 算法实现,也算是堆的另外一种形式。先写一个用 STL 里面堆算法实现的与真正的STL里面的 priority_queue用法相似的priority_queue, 以加深对 pri 阅读全文