version 1.1 build 20071115html
本篇文章是我(dd_engi)正在进行中的一个雄心勃勃的写做计划的一部分,这个计划的内容是写做一份较为完善的NOIP难度的动态规划总结,名为《解动态规划题的基本思考方式》。如今你看到的是这个写做计划最早发布的一部分。算法
背包问题是一个经典的动态规划模型。它既简单形象容易理解,又在某种程度上可以揭示动态规划的本质,故很多教材都把它做为动态规划部分的第一道例题,我也将它放在个人写做计划的第一部分。编辑器
读本文最重要的是思考。由于个人语言和写做方式向来不以易于理解为长,思路也偶有跳跃的地方,后面更有须要大量思考才能理解的比较抽象的内容。更重要的是:不大量思考,绝对不可能学好动态规划这一信息学奥赛中最精致的部分。工具
你如今看到的是本文的v1.1版,发布于2007年11月15日。我会长期维护这份文本,把你们的意见和建议融入其中,也会不断加入我在OI学习以及未来可能的ACM-ICPC的征程中获得的新的心得。但目前本文尚未一个固定的发布页面,想了解本文是否有更新版本发布,能够在OIBH论坛中以“背包问题九讲”为关键字搜索贴子,每次比较重大的版本更新都会在这个论坛里发贴公布。也能够用“背包问题九讲”为关键字在搜索引擎中搜索以获得最新版本。学习
这是最基本的背包问题,每一个物品最多只能放一次。优化
第二个基本的背包问题模型,每种物品能够放无限屡次。ui
每种物品有一个固定的次数上限。this
将前面三种简单的问题叠加成较复杂的问题。搜索引擎
一个简单的常见扩展。插件
一种题目类型,也是一个有用的模型。后两节的基础。
另外一种给物品的选取加上限制的方法。
我本身关于背包问题的思考成果,有一点抽象。
试图举一反三、触类旁通。
给出 USACO Training 上可供练习的背包问题列表,及简单的解答。
除动态规划外另外一种背包问题的解法。
若是有任何意见和建议,特别是文章的错误和不足,或者但愿为文章添加新的材料,能够经过http://kontactr.com/user/tianyi/这个网页联系我。
值得说明的是,若是有OI方面的问题,例如不明白本身的程序为何错了或者索要某种算法的源代码,使用这个联系方式可能得不到及时解答。请在OIBH论坛发问。
感谢如下名单:
他们每人都最早指出了本文曾经存在的某个并不是可有可无的错误。谢谢大家如此仔细地阅读拙做并弥补个人疏漏。
感谢 XiaQ,它针对本文的第一个beta版发表了用词严厉的六条建议,虽然我只认同并采纳了其中的两条。在全部读者几乎一边倒的赞赏将我包围的当时,你的贴子是个人一剂清醒剂,让我能清醒起来并用更严厉的眼光审视本身的做品。
sfita 提供了P01中的“一个常数优化”。
固然,还有用各类方式对我表示鼓励和支持的几乎没法计数的同窗。不论是当面赞赏,或是在论坛上回复个人贴子,不论是发来热情洋溢的邮件,或是在即时聊天的窗口里竖起大拇指,大家的鼓励和支持是支撑个人写做计划的强大动力,也鞭策着我不断提升自身水平,谢谢大家!
最后,感谢 Emacs 这一世界最强大的编辑器的全部贡献者,感谢它的插件 EmacsMuse 的开发者们,本文的全部编辑工做都借助这两个卓越的自由软件完成。谢谢大家——自由软件社群——为社会提供了如此有生产力的工具。我深深钦佩大家身上体现出的自由软件的精神,没有大家的感召,我不能完成本文。在大家的影响下,采用自由文档的方式发布本文档,也是我对自由社会事业的微薄努力。
Copyright (c) 2007 Tianyi Cui
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation.