p_b_p_b 讲课纪要
限于打摆时间太长和模拟赛太多,没有时间把它更完了,题目应该只有 1 个没写了
IOI2015 town
使用两遍 求直径的手段计算得到直径 某个端点 和另外一个圆点到所有点的距离,此时可以计算每个点 到直径的距离,也就是使用 减去 再除二
一定在直径上,第一问可以解决,同时可以找出有几个点取到最小值(最多两个)
先处理只有一个点 取到最小值的情况:
对于和直径作垂线得到的垂足不为 的可以通过到 的距离分到两边子树上
对于其他点 而言,判断是否处于同一个子树的方法是判断 和 到直径距离之和的大小关系,那么甚至不用管上一行所说,直接做摩尔投票再验证一遍询问次数就是
由于只关注“是不是再同一棵子树”,那么可以在第一遍做摩尔投票的时候记录相等关系直接算数目
如果这个 满足一定不需要把询问次数使用完(不相等的直接跳过不问,跳的次数是非这个子树元素数量,小于 ),否则询问次数用完的时候直接判定不存在即可
两个点取到最小值时直接判定是不是非移动方向一侧子树大小满足条件,因为移动向这侧都被冲散了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律