bzoj3991 sdoi2015寻宝游戏(1)

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3991
思路:一看就瞬间石化,,数据结构题,我要爆零
前二十分暴力分还是轻松得到的,很简单,这个出发点应该是有宝物的任意一个点都可以(可以维护平衡树或者堆?但我不会!)所以暴力找一个,然后dfs一遍,对于每条树边若子树中有宝物就加到答案里,最后×2就可以啦,,,复杂度:O(NM)只能得到20
自己yy下正解?反正不大会
貌似最后有15%堆的分,可以维护最大最小值也可以用平衡树但没写因为忘了堆怎么用了,,,
思路是这样的,观察,用平衡树维护序列进行删除和添加操作,每次找到一个根(最好保持不变)若添加一个点,可以发现相当于给从该点到根的路径的树边加一,只要树边大于1就算上,那么倍增查找向上最长0,顺便加一下答案,同时用LCT将这一段加一;若是删除操作,若不是根,则统统减一再查找0,算一下答案;若是根,则利用LCT换根再执行减一操作和修改答案,,,是不是很混乱?我也混啦!平衡树LCT树连剖分什么功能混在一起估计不对QAQ,不管啦, 复杂度:O(Mlog^2n)原谅我是嘴巴oi选手毕竟我不会啊,,
学习内容:树连剖分,LCT,平衡树,堆
总结:树上操作

你可能感兴趣的:(bzoj3991 sdoi2015寻宝游戏(1))