摘要: "题意" 类似 "超级钢琴" ,找最优解用可持久化trie。 code: 阅读全文
posted @ 2019-12-10 11:38 nofind 阅读(75) 评论(0) 推荐(0) 编辑
摘要: "题意" 先分块,预处理$f_{i,j}$表示从第$i$块的开头到第$j$个数的答案,之后就是分块的套路了。 注意$l,r$加的时候会爆int。 code: 阅读全文
posted @ 2019-12-10 10:51 nofind 阅读(96) 评论(0) 推荐(0) 编辑
摘要: "题意" 显然有这个DP: 设$f_x$表示封住$x$的子树的最小代价。 显然有: $f_x=\min(\sum\limits_{y\in son_x}f_y,a_x)$ 现在考虑用动态DP: 设$g_x$表示$x$除去的重儿子的$f_x$。 有: $f_x=\min(g_x+f_{heavyson 阅读全文
posted @ 2019-12-09 21:17 nofind 阅读(136) 评论(0) 推荐(0) 编辑
摘要: "题意" 我理解的动态DP: 发现DP可以写成矩阵的形式,因此用数据结构维护矩阵乘积。 对于这道题,显然有DP: $f_{x,0/1}$表示$x$的子树中,x选/不选的最大点独立集。 $f_{x,0}=\sum\limits_{y\in son_x}\max(f_{y,0},f_{y,1}),f_{ 阅读全文
posted @ 2019-12-06 14:21 nofind 阅读(121) 评论(0) 推荐(0) 编辑
摘要: "题意" 显然树剖套李超树。 考虑怎么算函数值: 设$(x,y)$的$lca$为$z$,我们插一条斜率为$k$,截距为$b$的线段。 $(x,z)$上的点$u$: $f(u)=k (dis[x] dis[u])+b= k dis[u]+(k dis[x]+b)$ 所以对这条路径插入斜率为$ k$,截 阅读全文
posted @ 2019-12-05 20:58 nofind 阅读(115) 评论(0) 推荐(0) 编辑
摘要: "题意" 李超树裸题,注意一开始截距是$S P$。 code: 阅读全文
posted @ 2019-12-05 07:12 nofind 阅读(112) 评论(0) 推荐(0) 编辑
摘要: "题意" 李超树板子题。 对每个区间维护该区间中点$mid$的最优线段。 插入一个线段: 求出这个线段的斜率和截距,注意特判无斜率的情况,得到$y=kx+b$。 之后开始在线段树上插入,假设当前节点$p$区间为$[l,r]$包含在插入区间内,那么比较插入的线段$id$与当前维护的线段$pos$,分类 阅读全文
posted @ 2019-12-04 21:02 nofind 阅读(200) 评论(0) 推荐(0) 编辑
摘要: "题意" 大力猜结论。 首先将所有$a_i$变为$a_i i$,之后求不严格递增的$b_i$,显然答案不变,最后$b_i$加上$i$即可。 考虑两种特殊情况: 1.$a[]$是递增的:所有$b_i=a_i$。 2.$a[]$是递减的:显然取$a[]$的中位数$x$,所有$b_i=x$。 现在考虑$a 阅读全文
posted @ 2019-12-04 19:51 nofind 阅读(106) 评论(0) 推荐(0) 编辑
摘要: "题意" 暴力自然是模拟,考虑优化下模拟的过程。 我们对每个点开个左偏树,初始为在该点的骑士,之后dfs过程当中从儿子向父亲合并,同时弹出小于当前点的骑士,增加当前点的答。对于每个骑士的答案,我们记录他的起始点和终点即可。 code: 阅读全文
posted @ 2019-12-04 18:47 nofind 阅读(101) 评论(0) 推荐(0) 编辑
摘要: "题意" 考虑整体二分。 考虑路径$(x,y)$被路径$(u,v)$包含需要满足什么条件: 设$dfn_x$表示$x$的$dfs$序,$low_x=dfn_x+size_x 1$,即子树最后一个的$dfs$序。 我们钦定$dfn_x using namespace std; define re re 阅读全文
posted @ 2019-12-04 13:53 nofind 阅读(143) 评论(0) 推荐(0) 编辑