AcWing
  • 首页
  • 课程
  • 题库
  • 更多
    • 竞赛
    • 题解
    • 分享
    • 问答
    • 应用
    • 校园
  • 关闭
    历史记录
    清除记录
    猜你想搜
    AcWing热点
  • App
  • 登录/注册

25/06/07 总结

作者: 作者的头像   贺杰 ,  2025-06-07 22:06:34 · 山东 ,  所有人可见 ,  阅读 1


0


Zombie’s Treasure Chest

这道题的数据范围比较大,都是4e9(int)的范围。如果数据范围比较小的话,其实有另一种做法,例如,体积都是1000000内,就有一个结论,如果先用物品1把这个总体积放满,然后再慢慢枚举少取一个物品1到少取s2个物品1,就能算出答案的一部分,因为如果物品1取到s2个时,这个体积的占用已经等价于物品2取s1个了,所以,同理,再枚举物品2放满。可以得到答案,时间复杂度min(s1, s2)。

在这道题中,也利用了这个原理,对于s1 * s2体积的最大价值是可知的,因为此时的最大价值一定是全取“价值密度”最高的那个。然后再枚举得剩余空间的最大价值。

刚开始无法理解这个时间复杂度。但可以不严谨的证明一下。剩余的空间为 n % (s1 * s2),看似再进行枚举每个的物品的时间复杂度是min(O(s1), O(s2)),以此题的数据范围s1,s2都比较大,但实际上限制这种做法的时间的地方在于n(总的空间)的范围,由于s1,s2的乘积或者大于,或者小于n。无论如何,如果选择体积较大的一个枚举数量,那么时间复杂度是考虑 $min(n, s1 * s2)$ 的空间内的最大价值,如果s1 * s2超过n时,说明s1和s2中那个比较大的值最小也有sqrt(n),就能解释它的时间复杂度了。它的时间复杂度大概是$O(sqrt(n))$

Highest Paid Toll
题解

分别从s和t(反图) dij一次,这样就能得到一定经过某条边的从s到t的最短路是多少。

deepseek也说 :“双向Dijkstra(或结合正向和反向Dijkstra的方法)是解决这类带限制的最短路径问题的经典做法,尤其在需要同时考虑路径总权值和路径上某些边权值的极值(如最大边权值)时非常有效。”。看来是个比较有用的做法。

The Fun Number System
题解

做法的核心是把负数位如果不选的话变为增加,如果选的话不减少。

这样的做法就是减小”0”的标准,让这个数字系统能达到的最小值作为”0”。这样可以让所有能达到的数都是正数,权值变为正数,只是选与不选的方式改变。从高位到低位遍历,就能得到答案。

如果是”Impossible”的话,这种方式下的 $n$ 的值超出了所能表达的范围$(0 \sim 2^k - 1)$,也就是负数全选的情况到负数位全不选正数位全选。

0 评论

App 内打开
你确定删除吗?
1024
x

© 2018-2025 AcWing 版权所有  |  京ICP备2021015969号-2
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标 qq图标
请输入绑定的邮箱地址
请输入注册信息