摘要: https://www.cnblogs.com/ljh2000-jump/p/6423399.html阅读全文
posted @ 2019-03-31 12:48 sworth 阅读(29) 评论(0) 编辑
摘要: 笛卡尔树的节点具有两个属性:键值与权值。 中序遍历每个节点,则其键值递增。任意一个父亲的权值都一定大于(小于)其儿子的权值。 由此可知,笛卡尔树的键值具有二叉搜索树的性质,权值具有堆的性质。Treap就是实现了一棵笛卡尔树。 笛卡尔树一般是根据序列建立的,一般以序列下标为键值,序列中的数为权值。 它阅读全文
posted @ 2019-03-29 12:31 sworth 阅读(41) 评论(0) 编辑
摘要: https://www.cnblogs.com/WAMonster/p/10181214.html 主要用于支持含有较难维护的区间操作与查询的问题,要求其中区间赋值操作(assign())是纯随机的。 注意要先split(r+1)再split(l),最好最后设一个点(n+1,n+1,0)阅读全文
posted @ 2019-03-28 19:36 sworth 阅读(30) 评论(0) 编辑
摘要: 显然先选每个点都取一遍然后再取满次数最优,用最小树形图决定第一次取的顺序。 朱刘算法的流程是(总复杂度O(nm)): 1.对除根外所有点,找到所有指向它的边中权值最小的那一条,记其权值为ind[]。 2.找到所有不包含根的、由(1)中找到的那些边构成的环,并将环缩点。若没有这样的环则结束。 3.将所阅读全文
posted @ 2019-03-26 19:34 sworth 阅读(18) 评论(0) 编辑
摘要: 线段树维护区间内1的个数v,最长1/0连续段长度d1/0,从左端开始最长1/0连续段长度dl1/0,从右端开始最长1/0连续段长度dr1/0,区间覆盖标记和反转标记。 我的方法中覆盖标记和反转标记不能共存,当需要打覆盖标记时先清空反转标记,需要打反转标记时若当前已存在覆盖标记则变为打上相反的覆盖标记阅读全文
posted @ 2019-03-22 17:39 sworth 阅读(29) 评论(0) 编辑
摘要: 树上LIS:树上找一条简单路径的子序列使点权严格单增,最大化长度。 原题数据过小,用线段树合并可以做到$O(n\log n)$。 每个点用一棵线段树维护以每个权值为结尾的LIS最长长度,线段树合并时更新子序列不包含当前点时的最大值,再线段树上区间询问得到包含时的最大值并更新线段树。阅读全文
posted @ 2019-03-21 23:50 sworth 阅读(34) 评论(0) 编辑
摘要: https://blog.sengxian.com/solutions/bzoj-2877 注意二维线段树的upd()也是一个O(log n)的函数(pushdown()应该也是但没写过)。阅读全文
posted @ 2019-03-20 09:23 sworth 阅读(16) 评论(0) 编辑
摘要: 设sm为所有p之和,套路地对每道菜建一个点,将每个厨师拆成sm个点,做的倒数第i道菜的代价为time*i。 S向每道菜连边<0,p[i]>(前者为代价后者为流量),i菜到j厨师的第k个点连<v[i][j]*k,1>,厨师到T连<0,1>。 但图太大了,于是动态加点。当厨师的第i个点被流完后再建第i+阅读全文
posted @ 2019-03-18 12:52 sworth 阅读(22) 评论(0) 编辑
摘要: https://www.cnblogs.com/MashiroSky/p/6576398.html阅读全文
posted @ 2019-03-14 08:55 sworth 阅读(32) 评论(0) 编辑
摘要: https://www.cnblogs.com/GXZlegend/p/8611948.html阅读全文
posted @ 2019-03-11 21:32 sworth 阅读(23) 评论(0) 编辑