浅谈背包问题的经典变换与单调队列优化

需积分: 9 0 下载量 49 浏览量 更新于2024-07-15 收藏 231KB PDF 举报
"浅谈几类背包题-浅谈几类背包题-单调队列优化(PASCAL)" 本资源主要讲解了背包问题的各种变换和优化方法,涵盖了多次背包、单调队列优化、树形依赖背包等知识点。 一、背包问题的基本变换 背包问题是动态规划中一个基础部分,然而以0-1背包问题为原题,衍生转变出的各类题目,可以说是千变万化。背包问题的基本变换包括完全背包、多次背包、单调队列优化等。 二、多次背包问题 多次背包问题是指给定n种物品和一个背包,第i种物品的价值是Wi,其体积为Vi,数量是Ki件,背包的容量为C。可以任意选择装入背包中的物品,求装入背包中物品的最大总价值。 三、单调队列优化 单调队列优化是指对于一个左右边界都只增不降的区间最值,可以用单调队列来做到总效率O(n)的维护。如果要用单调队列来优化多次背包,就必须在多次背包问题中挖掘出一个维护区间最值的子问题。 四、单调队列优化在多次背包中的应用 在多次背包问题中,可以用F[i,j]表示前i种物品,总体积不超过j的最大价值总和。当前只考虑第i种物品,假设体积v,价值w,数量k。由于对于体积j,与其相关的只有那些对v的余数与j相同的体积,所以再按照体积j对v的余数分为v份。 五、单调队列优化的实现 单调队列优化可以用来处理每一份分开处理,假设现在要考虑余数为d的部分。用j来标号,规定编号j所对应的体积是d+j*v。编号j可以从编号j-k到j中的任意一个转移而来,因为相邻的体积正好相差v。 六、树形依赖背包问题 树形依赖背包问题是指给定n件物品和一个背包。第i件物品的价值是Wi,其体积为Vi,但是依赖于第Xi件物品(必须选取Xi后才能取i,如果无依赖则Xi=0),依赖关系形成森林,背包的容量为C。可以任意选择装入背包中的物品,求装入背包中物品的最大总价值。 本资源对背包问题的各种变换和优化方法进行了详细的介绍和分析,为读者提供了一个系统的学习和研究的参考资源。
2018-01-25 上传
VLC 播放器,涉及到ffmpeg,视频播放等,是pascal 的使用实例delphi 头源码,欢迎使用包含l。 examples examples\avio_dir_cmd.dpr examples\avio_reading.dpr examples\decoding_encoding.dpr examples\demuxing_decoding.dpr examples\extract_mvs.dpr examples\FFUtils.pas examples\filtering_audio.dpr examples\filtering_video.dpr examples\filter_audio.dpr examples\LICENSE.txt examples\metadata.dpr examples\muxing.dpr examples\remuxing.dpr examples\resampling_audio.dpr examples\scaling_video.dpr examples\transcode_aac.dpr examples\transcoding.dpr headers headers\CompilerDefines.inc headers\FFTypes.pas headers\libavcodec.pas headers\libavcodec_avfft.pas headers\libavdevice.pas headers\libavfilter.pas headers\libavfilter_avcodec.pas headers\libavfilter_buffersink.pas headers\libavfilter_buffersrc.pas headers\libavfilter_formats.pas headers\libavformat.pas headers\libavformat_avio.pas headers\libavformat_url.pas headers\libavutil.pas headers\libavutil_audio_fifo.pas headers\libavutil_avstring.pas headers\libavutil_bprint.pas headers\libavutil_buffer.pas headers\libavutil_channel_layout.pas headers\libavutil_common.pas headers\libavutil_cpu.pas headers\libavutil_dict.pas headers\libavutil_display.pas headers\libavutil_error.pas headers\libavutil_eval.pas headers\libavutil_fifo.pas headers\libavutil_file.pas headers\libavutil_frame.pas headers\libavutil_imgutils.pas headers\libavutil_log.pas headers\libavutil_mathematics.pas headers\libavutil_md5.pas headers\libavutil_mem.pas headers\libavutil_motion_vector.pas headers\libavutil_opt.pas headers\libavutil_parseutils.pas headers\libavutil_pixdesc.pas headers\libavutil_pixfmt.pas headers\libavutil_rational.pas headers\libavutil_samplefmt.pas headers\libavutil_time.pas headers\libavutil_timestamp.pas headers\libswresample.pas headers\libswscale.pas headers\libversion.inc