同余最短路
prologue
都快 csp-s 了还啥也不会的废柴一根,真不知道能不能进队(痴人说梦)。
(后日谈:没进队,回去上 whk 了,不知不觉间也已经过了一年了,明年考上大学之后继续启动 xcpc。 还会回来!)
main body
同余最短路的适用题型
当出现形如「给定 n 个整数,求这 n 个整数能拼凑出多少的其他整数(n 个整数可以重复取)」,以及「给定 n 个整数,求这 n 个整数不能拼凑出的最小(最大)的整数」,或者「至少要拼几次才能拼出模 K 余 p 的数」的问题时可以使用同余最短路的方法。
看到上述的问题,其实很像完全背包,但是你如果开个完全背包很容易就 MLE 喜提0pts 的好成绩,所以我们考虑出来的一种优化方法,优化掉空间,从而实现大跃进( 0pts -> 100pts
同余最短路的通见转移形式
通常我们面对一个题目可以推出来如下的式子:
我们很容易类比到单源最短路。(哪里容易,要不是学了我能想到这?)
最后的答案统计由于我们会对于这个数字一直取模,所以我们的统计答案范围应该是在
例题
T1
P2371 [国家集训队] 墨墨的等式(这个题目也比较板子,不要担心。)
这个题目中我们有 n 个数字,然后让我们去配凑一个 b。然后就按照我们上面说的板子就可以了。只有在我们最后统计答案的时候,因为给定了我们一个区间,所以我们可以借助一种类似于前缀和的思想,统计出来从
普通最短路做法(我选择的是 dijkstra + heap):
下面是我们的神奇转圈做法:
(这代码是又短又香,这你不学起来?空间复杂度还低。)
T2
P3403 跳楼机(放大心,纯板子,不至于让你跳楼。)
这个题目是上面的简化版本,只有三个数字。
同时这个题目还有上面我说到的结合具体含义背景。(应该没有人的家里有第零层吧,如果有能不能给孩子拍一下,孩子见识少,没见过。)
统计答案是和上面统计答案的方法一样的。
这个题放最短路的。
T3
对于这个题目的准确范围我也不太清楚,如果有人搞懂请联系我,我修正这个地方。我觉得应该是 3000 就够了,但是在没想清楚(看到
也可以去本人题解看看。
这个题目把每根木棒削去 m 之后的木棒的都表示出来就行了,就这一个转化。唯一判断没有没有可以表示的数的条件是我们的取模数是 1,但是我们可以用一些手法直接给省去判断,下面代码中注释。
这里放个转圈圈的。
T4
支持前往本人题解查看此题更详细讲述。
中间过程太长了,就省去了。(强制去我的题解看)
马蜂优良。
后面估计还会有几个题目,就先到这里了,得去学别的了,那几个做完之后补上,不会咕咕咕。
__EOF__

本文链接:https://www.cnblogs.com/carp-oier/p/coresidualSP.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现