P2347 NOIP1996 提高组 砝码称重
1|0P2347 NOIP1996 提高组 砝码称重
最初思路
看出来是多重背包,但是第一次用于求方案数,一开始想的是累加。但是实现起来发现结果很抽象,想想也不是那么回事。比如从样例上来说,F[3] = 1
,F[2] = 1
,F[1] = 1
,显然F[3] != F[1] + F[2]
改进思路
然后受到启发,决定用打标记的思想,即若重量F[j]
标记,然后用动态规划转移这些标记。
F[J] = F[j - w[i]] ? 1 : 0
思路其实是正确的,但是代码实现出了很多问题。
代码实现
8ptscode
首先初始化问题
- 这是一个不能想当然的过程,我想当然把所有初始砝码重量都赋值为1。
- 直到在每次
ans++
时调试输出 才发现问题,最终总结出应把F[0] = 1
即可。
if顺序问题
- 本题的
是完全有可能在 时也被标记过的,因为这是标记该重量可行,答案只需统计一次,而if (F[j]) continue;
则是为了避免重复统计答案,但是该语句放到else
后则无法处理 时 被标记过的情况。
ACcode
__EOF__

本文作者:Kdlyh
本文链接:https://www.cnblogs.com/kdlyh/p/17809222.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/kdlyh/p/17809222.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下