2022/10/25 题解
天天考,tmd!!!!/fn
T3 [AGC008F] Black Radius
Solution#
tmd,只要方向一错就tm永远做不出来!!!!/fn
设 表示以 为圆心,半径为 覆盖到的点集。我们考虑对于每个 在 最小的时候统计,可以证明的是不会出现 使得 ( 不是全集)。所以我们以下都在不考虑全集的情况下考虑,最后加 即可。
那么我们先考虑 的情况。对于点 ,可以发现的是,一定是统计到一个前缀,而如果 需要在 被统计到,那么任意 都存在 ( 是 的相邻节点)。 所以我们考虑以 为根来考虑,那么可以发现即是 除 以外子树的最大深度。那么做个换根即可。
然后考虑 的情况,那么即是对于 判断是否存在 使得 且 是能覆盖 的最小半径,且 。可以证明的是,如果存在 ,那么以 为根时 的包含 的邻接子树必须都被覆盖到(可以使用反证法证明,如果存在未被覆盖的节点,那么取它与 的 lca 会更优)。那么取一个深度最小的一定最优。
然后你发现可以对于每个 把合法的区间用换根求一下就好了。
T4 [AGC011F] Train Service Planning
Solution#
根本没看/kk
不妨设 表示 第 个站台的停留时间。我们考虑设 ,最后答案就是 。另外注意到的是,因为我们是每 间隔发一次车,那么我们可以在 的情况下考虑。又因为我们可以自己定 且不会影响什么(相当于时间一起转一下),所以我们调整到
如果一个区间是双向的,那么没有限制,否则经过这个区间的两个时间不能相交,对于第 个区间即是: 。
那么我们注意到相当于我们可以一开始自己确定一个 ,每一次可以增加一个值使得在一个区间里,最后使得 最小。那么注意到的是,如果一个点不在一个区间里,那么调整到区间左端点一定更优。
然后用线段树之类的随便做就好了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
2020-10-25 题解 2020.10.24 考试 T4 模板
2020-10-25 题解 2020.10.24 考试 T3 数列