A
答案为 。
B
传送与传送之间的每一段都是一个区间,也就是每次选一个区间 。
这个是经典的,答案为 ,证明考虑差分,每次将两个数 ,显然最少需要所有正数差分值得和,也容易构造解。
C
显然只用关心 和 ,即 。
答案的上界是 ,构造的话考虑当前数分别是 ,分 奇偶性讨论,都可以通过 或 使 。
D
设 处开始的最小值为 ,有
依此可求出 的下界,对于 ,增量考虑,用 multiset
维护即可,。
E
令 表示,子树 中仍有最终未被删除的点的最大贡献。
转移有
分别对应只保留 , 被压缩和 不被压缩三种情况。
考虑 和答案的关系,我们钦定 为根,有
分别对应只保留 , 不被压缩和 被压缩三种情况。
简化一下,即
分 和 的部分贪心取即可。时间复杂度 。
因为可以删光,记得 与 取 。
F
使梯形面积最小,即保证答案合法同时,直线在 处的 尽量小。记 。
容易发现直线一定至少过两个折点,否则一定可以通过顺时针或逆时针旋转减小 ,直到碰到另一个点。又因为所有点都在这条直线下方,所以答案直线一定是凸包某条线段的所在直线。因为让 最小,更进一步地,是凸包过 的线段所在的直线。于是我们解决了没有修改的问题。
加上修改,似乎要支持一个合并凸包的操作。但我们只关注跨越 的那条线段,先看如何处理左半边的答案。
设当前时刻为 。暴力想法是枚举左半边的点和右半边的点共 条线段,算出 最大值,对应的线段一定在凸包上。发现有效的线段很少,对于左边的某点 ,它最优的匹配点一定在右半边的凸包上,换句话说,是 与右半边凸包的切点,于是可以二分求得。
记 为过 点的切线, 为直线 在 处的值,则 ,预处理前缀后缀 即可。
右半边的做法类似,时间复杂度 。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话