随笔分类 -  树上问题—树链剖分

摘要:真·小清新... 其实本题正解是动态点分治,但是考虑到那个东西需要先大力推导一波再套上一个幻想乡战略游戏的搞法,所以还不如大力推导一波,然后无脑套上一个树剖+线段树写法... 首先我们考虑没有换根操作: 没有换根操作时,设每次修改的变化量为δ,很显然每次修改时只会影响一条树链上的贡献, 阅读全文
posted @ 2019-07-10 08:57 lleozhang 阅读(163) 评论(0) 推荐(0) 编辑
摘要:首先是动态dp了嘛... 然后考虑怎么做:首先列出dp方程,大概长这样: f[i]=min(v[i],f[to]) 看着不太像动态dp呀... 考虑拿出重儿子的贡献,然后套模型,大概能构造出一个这样的东西: 设gi=fto[to!=son] $\begin{p 阅读全文
posted @ 2019-07-02 08:40 lleozhang 阅读(194) 评论(0) 推荐(0) 编辑
摘要:首先我们考虑事件发生的真正的先后顺序 我们考虑在某一个点f的子树内有两点ij先后在ti,tj两个时间向上发送信息 那么两者谁会先传到f呢? 推个小式子:设i先到达f,那么一定要满足的条件是depidepf+ti<$dep_{j}- 阅读全文
posted @ 2019-07-01 10:15 lleozhang 阅读(262) 评论(0) 推荐(1) 编辑
摘要:首先有个思想,就是逐层更新 然后考虑每次查询是查从某一点到根节点的树链上的信息,因此用树链剖分维护即可,处理每个点的对子树中节点的贡献可以区间修改(只需修改这一节点向上的树链即可),然后查询时区间查询,去掉不合法的部分即可 时间复杂度O(nlog22n),其实本题正解应当是$O(nl 阅读全文
posted @ 2019-06-28 11:17 lleozhang 阅读(222) 评论(0) 推荐(0) 编辑
摘要:去年noip题啊... 这题动态dp裸题,因此直接套上去嘛! 动态dp板子看这里 设状态f[i][0/1]表示点i选/不选的最小花费,转移有 f[i][0]=f[son][1] f[i][1]=wi+min(f[son][0],f[son][1]) 同样设一 阅读全文
posted @ 2019-06-26 20:37 lleozhang 阅读(129) 评论(0) 推荐(0) 编辑
摘要:动态dp是一个毒瘤且奇葩的东西... 然而noip2018出了这个东西... 因此... 以一道题为例吧:给出一棵带点权的树,每次修改一个点的点权,查询这棵树的最大权独立集(可以理解为每次询问一遍“没有上司的舞会”) 首先考虑暴力: 设状态f[i][0/1]表示以i为根的子树,点i选或不 阅读全文
posted @ 2019-06-26 19:04 lleozhang 阅读(218) 评论(0) 推荐(0) 编辑
摘要:首先吐槽一下bzoj,这CF原题还做成权限题啊?! 需要注意的是,一个点不能被选中当且进当这个点在第y+1年到现在这一段时间内受到攻击,其余的点都可以被选 然后...其实这题的重点在于...码 思想很简单,先树链剖分,然后建起一棵主席树维护,每次修改就生成一个新版本,这样的话用现在的版本-时刻y的版 阅读全文
posted @ 2019-06-26 09:52 lleozhang 阅读(168) 评论(0) 推荐(0) 编辑

levels of contents
点击右上角即可分享
微信分享提示