题解 P10055【[CCO2022] Rainy Markets】
首先尽量把所有人放在左边的车站,然后再尽量放在右边的车站,求出此时 位置车站有多少空位留给 位置的人,记为 。也就是:
然后从右向左贪心。对于第 位置的人,设去左边、不动买伞、去右边的人数分别为 。由于右侧都已经尽量优地分配过,令这个位置的人优先去右边不会使得情况变得更劣,因此先贪心把右边填满,也就是:
之后为了使总花费尽量小,肯定是在不影响左侧的情况下尽量都去左边,这时候计算过的 就派上了用场, 就代表着左边有多少地方一定可以给 位置的人,且不会影响左侧的决策,也就是:
剩下的人一定需要买伞,因为即使在这里不买伞,去到左边也会使得左边的一些人需要买伞。我们让他们直接就地买伞:
如果还有剩下的人,就不得不让他们去左边挤一挤了:
如果 即为无解,所有 即求得了最优解及其构造。
时间复杂度 。
所有关键都在上文给出了,代码就不放了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2022-01-08 题解 CF482B【Interesting Array】