20221113 star模拟赛 随记
Explo
依次考虑是否取 个物品,初始有权值 ,以及常数 。
物品分为两类,对于第 个物品:
若为第一类,则选择第 个物品会得到 的贡献,并会使得 .
若为第二类,则选择第 个物品会失去 的贡献,并会使得 .
求最终最大贡献。
一致认为这道是全场最佳。很有启发性。
第一想法是设 表示对于前 个物品,当前 正向变化了 次,反向变化了 次时的最大贡献,但是复杂度显然不对。
那怎么办,有点棘手,场上直接先跳过想后面题了。但仔细分析发现,只有前 个物品的选取情况才会影响第 个物品的贡献,这也是我们 dp 状态不好设置的原因——影响是复杂的而非单一的,我们还需要考虑 的取值。
但我们可以思考一下 在这个问题里面的本质作用是什么——是给后面物品的贡献加了个权。加了个权?也就是如果我们拿到了后面子问题的最优贡献,就可以直接加权计算当前贡献,并且加了个权之后还是最优的啦?
那就倒序做呗!设 表示对于后 个物品这个子问题,最大贡献是多少,则有转移方程:
最终答案为 ,时间复杂度 。
很有启发性,值得仔细品味。
Seq
给定一个长度为 的数列,以及 次询问,每次询问给出三个数 ,需要找到一对 ,满足 ,使得 最小,给出这个最小值。
。
轻度诈骗题。
首先将求和转为在前缀和序列上差分,即使得 最小。
考虑到 的取值特别小,一个很好的结论是, 之间的不同的 的取值最多只有 种(废话),也就是只要 的长度大于 ,我们一定能在区间 中找到两个模 意义下相同的 ,那么我们只要选择这两个相减即可使得答案为 。
于是当 时,最小值一定为 。
剩下的最长询问区间长度就只剩下 了。暴力的做法当然是枚举两个不同的 ,相减取最小值,这样其实已经很优了,时间复杂度 。优化当然也很好优化,枚举每一个 ,找它前面在 之间的 集合中的前驱后继取最小值即可,set 就可以维护了。
时间复杂度 。
Earth
个点 条边的无向图,选择一个整数 ,使得每一条边的边权都加上 后,从 到 的最短路径长度非负且最小,求这个最短路径长度。 组数据。
.
很容易发现随着 的变化,最短路径长度的变化是单调的。
于是考虑二分 ,在图上跑最短路,如果连通且 为正则挪右端点,否则挪动左端点。
记得在最短路的过程中需要判断负环,出现负环一定无解。
时间复杂度 。
最后还检查出来了 T3 的数组大小错误,感觉还不错。
期望得分 。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现