摘要: 题目大意:有一棵$n$个点的树,和一个费用$m$,每个点有一个费用和价值,请选一个点,再从它的子树中选取若干个点,使得那个点的价值乘上选的点的个数最大,要求选的点费用总和小于等于$m$ 题解:树形$dp$,贪心可得选的点一定是费用最少的几个点,可以用可并堆,大根堆,若总费用大于$m$就把堆顶弹掉,直 阅读全文
posted @ 2018-11-27 19:07 Memory_of_winter 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 题目大意:有一棵$n$个点的树,第$i$个点权值为$w_i$,有两种操作: 题解:树剖,然后就可以把树上问题转化为序列上的问题,可持久化$Trie$即可 卡点:树剖判断条件错 C++ Code: 阅读全文
posted @ 2018-11-27 15:57 Memory_of_winter 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 题目大意:求树上最长的异或路径 题解:由于异或具有自反性,只需要求出每个节点到根的异或长度,塞进$Trie$里,最后对每个节点找一下最大值更新答案即可 卡点:把动态开点写成了可持久化,然后空间要再多开一点(比层数多一) C++ Code: 阅读全文
posted @ 2018-11-27 10:30 Memory_of_winter 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 题目大意:有一串初始长度为$n$的序列$a$,有两种操作: 题解:把序列前缀和,变成$S$,就变成了在$[l-2,r-1]$区间内找一个数$S_p$,使得$S_p\oplus S_n\oplus x$最大。可持久化$trie$ 卡点:无 C++ Code: 阅读全文
posted @ 2018-11-27 09:53 Memory_of_winter 阅读(148) 评论(0) 推荐(0) 编辑