摘要:
题意:给定序列,将其分成k段。如果[l, r]在一段,那么每对不相同的i,j∈[l, r]都会有ai,j的代价。求最小总代价。 解:提供两种方案。第三种去bzoj贞鱼的n²算法。 决策单调性优化: 对于两个转移点j1 < j2,若在某个点i上j2更优,则i后面的j2全部更优。这就是决策单调性。 有两 阅读全文
摘要:
经典的k条白边MST 带权二分,按照套路我们要选择尽量少的白边。 1 #include <cstdio> 2 #include <algorithm> 3 4 const int N = 100010; 5 6 int D; 7 8 struct Edge { 9 int x, y, val, co 阅读全文
摘要:
虽然叫做非旋treap但是飞旋treap很带感所以就用这个名字了(SB) 这个东西是真的好写...... 主要的两个函数只有两个,rotate和splay,split和merge。 merge就是大家都熟悉的左偏树合并,线段树合并......注意不能swap(x, y) split分为splitV和 阅读全文
该文被密码保护。 阅读全文
摘要:
[update] 好像有个东西叫笛卡尔树,好像是这样建的..... 题意:给定树上k个点,求切断这些点到根路径的最小代价。∑k <= 5e5 解:虚树。 构建虚树大概是这样的:设加入点与栈顶的lca为y,比较y和栈中第二个元素的DFS序大小关系。 代码如下: 然后本题建虚树跑DP就行了。注意虚树根节 阅读全文