摘要: 首先将之间没有锁的房间合并。显然可达性具有传递性和反交换律(即若a能到达b,则b不能到达a)。 考虑对每个房间找到其左右第一个(即与其最接近的)能作为起点到达它的房间。如果能求出这个,对此建两棵树,问题就变为终点是否在起点的子树内。 容易想到单调栈。不妨考虑求左边第一个。栈内维护当前房间左边能作为起 阅读全文
posted @ 2018-12-11 20:11 Gloid 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 注意到一旦在某个路口被红灯逼停,剩下要走的时间是固定的。容易想到预处理出在每个路口被逼停后到达终点的最短时间,这样对于每个询问求出其最早在哪个路口停下就可以了。对于预处理,从下一个要停的路口倒推即可。问题只剩下如何求出下一个要停的路口,这相当于求满足di,j%(g+r)>=g的最小j,对d做一个前缀 阅读全文
posted @ 2018-12-11 12:48 Gloid 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 日常猝死。 A:f[i]表示子树内包含根且可以继续向上延伸的路径的最大价值,统计答案考虑合并两条路径即可。 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include 阅读全文
posted @ 2018-12-11 03:24 Gloid 阅读(386) 评论(1) 推荐(0) 编辑