摘要: A. 星际穿越 感觉也很神。。 先将询问拆成前缀和的形式,我们要对于一组询问 \((l,r)\) 求出 \([l,r]\) 内所有点到 \(r\) 的最短距离的和。 考虑 \(r\) 往左走的最短路径是怎么走的: 引理一:往右走之前一定不会往左走 反证法。如果先往左走在往右走,那么这个右边的点一定能 阅读全文
posted @ 2020-10-22 22:13 RainAir 阅读(62) 评论(0) 推荐(0) 编辑
摘要: A 考虑枚举右端点,维护所有左端点的答案:只需要处理出 \(pre_i\) 表示 \(i\) 前面第一个和它一样的位置,每次让 \((pre_i,i]\) 加上 \(w\),\((pre_{pre_i},pre_i]\) 减去 \(w\) 即可。 #pragma GCC optimize("Ofas 阅读全文
posted @ 2020-10-22 21:38 RainAir 阅读(76) 评论(0) 推荐(0) 编辑
摘要: A 我考试的做法是贪心:首先这个题目等价于要求回到根(可以传送),那么如果没有传送操作,答案就是按照 \(dfn\) 序走,有了传送只需要在每一步判下是传送回去再走过来优还是直接走优了。注意这样我们要先遍历深度最大值比较小的点,这样就能在最后传送回去,不会浪费。 题解的做法是dp。对于这种树上游走的 阅读全文
posted @ 2020-10-22 21:17 RainAir 阅读(194) 评论(0) 推荐(0) 编辑