USACO 2024年2月月赛
观察发现,所有靶子右上角必须斜率负数,右下角必须斜率正数,左端点没有要求。先判断斜率中负数和正数的数量是否都达到
其次,如果现在有两条线和两个
因此,记一共有
斜率为正为负可以独立计算。我们只需要算出 斜率负数中与
因为两种情况是对称的,这里只写斜率正数的情况。
把斜率从大到小排序,从大到小遍历,对于每个斜率,暴力找到当前还没匹配好的、与它构成的截距最高的点,同时与它匹配。
这个贪心为什么正确?
反证法。假如有两个斜率
正确是正确,但是每次暴力找点,一共找
观察问题:“最低的最高是多少”,这就是二分的经典语句。于是考虑二分这个最高的值
把一个颜色段看作一个球。现在有三个栈。初始
依次判断。
-
如果
中都只有一种颜色且 空,结束。 -
若
的栈顶元素不一样且 为空时,把 中球数量多的那个栈的栈顶放到 里。 -
否则先判断是否三个栈都非空,若是:
-
若
的栈顶相同,球较多的 pop 栈顶。 -
若
或 的栈顶相同,不妨 的栈顶相同。记这个栈顶球颜色为 。若 只剩这一个球且 仅剩 这两个球,则 弹栈;否则 弹栈。
-
-
若不是:
-
若
为空,则此时 的栈顶相同,令 中较多的弹栈。 -
否则不妨
空。判断:-
若
都仅剩一个球,令 的栈顶进入 ; -
若
栈顶相同,令 弹栈。 -
否则,令
的栈顶进入 。
-
-
以下一切都在 Bessie 采用了最佳策略,即 Elsie 的最差情况下考虑。
令
令
-
如果选 Even,之后还能构造出一种可行方案,选 Even,并更新当前血量;
-
如果选 Odd,之后还能构造出一种可行方案,选 Odd,并更新当前血量;
-
否则,无解。
现在的问题就是怎么判断之后是否有可行方案。记当前血量是
Elsie 的最优方案是什么?即每一个回合若
考虑另外一个数组
显然这个数组是可以
如果现在是第
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!