摘要: 传送门 正解……正解是二分W值,每次check的时候遍历一遍序列处理满足条件的矿产的前缀和个数和前缀和价值,然后对于每个询问直接用前缀和求得贡献。复杂度O((n+m)log(maxw))。 惨烈的数据结构学傻现场……真的,数据结构降智。之前运输计划那题我还想暴力树剖+线段树分治。 而对于一个数据结构 阅读全文
posted @ 2019-11-14 20:13 Chloris_Black 阅读(142) 评论(0) 推荐(2) 编辑
摘要: 传送门 将每个玩家的路径看作两部分:向根上行以及向叶子下行 p为每个点出现观察员的时间。子树中的起点u到当前点v的路径即是上行,如果dep[v]+p[v]=dep[u],则u对v产生一个贡献。当前点u到子树中终点v的路径即是下行,如果dep[v]-dis(x,v)=dep[u]-p[u](x为这条路 阅读全文
posted @ 2019-11-14 19:59 Chloris_Black 阅读(181) 评论(0) 推荐(2) 编辑
摘要: 传送门 二分所求的答案w,找出所有长度大于w的路径,用差分标记到树上。dfs一遍整棵树,找出所有标记在树上的路径的最长公共边,如果最长的一条路径减去这条边小于等于w,则w是满足题意的答案之一。 预处理每条路径的长度和两端点的lca。 复杂度n*log(最长路径),注意常数。 #include<ios 阅读全文
posted @ 2019-11-14 19:30 Chloris_Black 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 传送门 二分所求的最大值,树形dp判断能否凑够m个 每条赛道的贡献都是1,贪心地让子树中尽可能凑出赛道,将剩下的最长链传上去 用multiset储存所有子节点传上来的链,从小到大尝试让每条链进行匹配,二分multiset中最小的满足匹配的值,将它们删去。这样可以保证进行匹配的尽量多,并且最后传上去的 阅读全文
posted @ 2019-11-14 11:23 Chloris_Black 阅读(151) 评论(0) 推荐(1) 编辑