dp专题训练
******************************************************************************************
动态规划 专题训练
********************************************************************************************
一、简单基础dp
这类dp主要是一些状态比较容易表示,转移方程比较好想,问题比较基本常见的。
1、递推:
递推一般形式比较单一,从前往后,分类枚举就行。
入门:
hdu 2084 数塔 简单从上往下递推
hdu 2018 母牛的故事 简单递推计数
hdu 2044 一只小蜜蜂... 简单递推计数(Fibonacci)
hdu 2041 超级楼梯 Fibonacci
推荐:
CF 429B B.Working out 四个角递推
zoj 3747 Attack on Titans 带限制条件的计数递推dp
hdu 2050 折线分割平面 找递推公式
hdu 4489 The King's Ups and Downs
2、背包
经典的背包九讲:http://love-oriented.com/pack/
推荐博客:http://blog.csdn.net/woshi250hua/article/details/7636866
主要有0-1背包、完全背包、分组背包、多重背包。
简单:
hdu 2955 Robberies 01背包
hdu 1864 最大报销额 01背包
hdu 2844 Coins 多重背包
hdu 2159 FATE 完全背包
推荐:
woj 1537 A Stone-I 转化成背包
woj 1538 B Stone-II 转化成背包
poj 1170 Shopping Offers 状压+背包
zoj 3769 Diablo III 带限制条件的背包
zoj 3638 Fruit Ninja背包的转化成组合数学
hdu 3092 Least common multiple 转化成完全背包问题
poj 1015 Jury Compromise 扩大区间+输出路径
poj 1112 Team Them UP 图论+背包
3、LIS
最长递增子序列,朴素的是o(n^2)算法,二分下可以写成o(nlgn):维护一个当前最优的递增序列——找到恰好大于它更新
简单:
推荐:
uva 10635 Prince and Princess LCS转化成LIS
hdu 4352 XHXJ's LIS 数位dp+LIS思想
srm div2 1000 状态压缩+LIS
poj 1239 Increasing Sequence 两次dp
4、LCS
最长公共子序列,通常o(n^2)的算法
uva 111 History Grading 要先排个序
二、区间dp
推荐博客:http://blog.csdn.net/woshi250hua/article/details/7969225
区间dp,一般是枚举区间,把区间分成左右两部分,然后求出左右区间再合并。
poj 1141 Brackets Sequence 括号匹配并输出方案
hdu 4745 Two Rabbits 转化成求回文串
zoj 3541 The Last Puzzle 贪心+区间dp
三、树形dp
比较好的博客:http://blog.csdn.net/woshi250hua/article/details/7644959
一篇论文:http://doc.baidu.com/view/f3b19d0b79563c1ec5da710e.html
树形dp是建立在树这种数据结构上的dp,一般状态比较好想,通过dfs维护从根到叶子或从叶子到根的状态转移。
hdu 4123 Bob's Race 二分+树形dp+单调队列
hdu 4514 求树的直径
hdu 4126 Genghis Kehan the Conqueror MST+树形dp 比较经典
hdu 4756 Install Air Conditioning MST+树形dp 同上
hdu 3660 Alice and Bob's Trip 有点像对抗搜索
CF 337D Book of Evil 树直径的思想 思维
四、数位dp
推荐一篇论文:http://wenku.baidu.com/view/d2414ffe04a1b0717fd5dda8.html
数位dp,主要用来解决统计满足某类特殊关系或有某些特点的区间内的数的个数,它是按位来进行计数统计的,可以保存子状态,速度较快。数位dp做多了后,套路基本上都差不多,关键把要保存的状态给抽象出来,保存下来。
hdu 2089 不要62 简单数位dp
CF 401D Roman and Numbers 状压+数位dp
hdu 4398 X mod f(x) 把模数加进状态里面
hdu 4734 F(x) 简单数位dp
hdu 3693 Math teacher's homework 思维变换的数位dp
hdu 4352 XHXJ's LIS 数位dp+LIS思想
CF 55D Beautiful Numbers 比较巧妙的数位dp
CF 258B Little Elephant and Elections 数位dp+组合数学+逆元
五、概率(期望) dp
推荐博客:http://www.cnblogs.com/kuangbin/archive/2012/10/02/2710606.html
推荐博客:http://blog.csdn.net/woshi250hua/article/details/7912049
推荐论文:
一般来说概率正着推,期望逆着推。有环的一般要用到高斯消元解方程。期望可以分解成多个子期望的加权和,权为子期望发生的概率,即 E(aA+bB+...) = aE(A) + bE(B) +...
ural 1776 Anniversiry Firework 比较基础
hdu 4418 Time travel 比较经典BFS+概率dp+高斯消元
hdu 4586 Play the Dice 推公式比较水
jobdu 1546 迷宫问题 高斯消元+概率dp+BFS预处理
hdu 3853 LOOPS 简单概率dp
hdu 4405 Aeroplane chess 简单概率dp,比较直接
hdu 4089 Activation 比较经典
poj 2096 Collecting Bugs 题目比较难读懂
zoj 3640 Help me Escape 从后往前,比较简单
hdu 4034 Maze 经典好题,借助树的概率dp
hdu 4336 Card Collector 状态压缩+概率dp
hdu 4326 Game 这个题状态有点难抽象
六、状态压缩dp
这类问题有TSP、插头dp等。
推荐论文:http://wenku.baidu.com/view/ce445e4f767f5acfa1c7cd51.html
推荐博客:http://blog.csdn.net/sf____/article/details/15026397
推荐博客:http://www.notonlysuccess.com/index.php/plug_dp/
hdu 4568 Hunter 最短路+TSP
hdu 4539 插头dp
poj 2411 Mandriann's Dream 轮廓线dp
七、数据结构优化的dp
有时尽管状态找好了,转移方程的想好了,但时间复杂度比较大,需要用数据结构进行优化。常见的优化有二进制优化、单调队列优化、斜率优化、四边形不等式优化等。
1、二进制优化
主要是优化背包问题,背包九讲里面有介绍,比较简单,这里只附上几道题目。
2、单调队列优化
推荐论文:http://wenku.baidu.com/view/4d23b4d128ea81c758f578ae.html
推荐博客:http://www.cnblogs.com/neverforget/archive/2011/10/13/ll.html
poj 3245 Sequece Partitioning 二分+单调队列优化
3、斜率优化
推荐论文:用单调性优化动态规划
推荐博客:http://www.cnblogs.com/ronaflx/archive/2011/02/05/1949278.html
4、四边形不等式优化
推荐博客:http://www.cnblogs.com/ronaflx/archive/2011/03/30/1999764.html
推荐博客:http://www.cnblogs.com/zxndgv/archive/2011/08/02/2125242.html
dp专题训练的更多相关文章
- DP专题训练之HDU 2955 Robberies
打算专题训练下DP,做一道帖一道吧~~现在的代码风格完全变了~~大概是懒了.所以.将就着看吧~哈哈 Description The aspiring Roy the Robber has seen a ...
- DP专题训练之HDU 1087 Super Jumping!
Description Nowadays, a kind of chess game called "Super Jumping! Jumping! Jumping!" is ve ...
- DP专题训练之HDU 1231 最大连续子序列
Description 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j < ...
- DP专题训练之HDU 1864 最大报销额
做DP一定要注意数组的大小,嗯,就是这样~ Description 现有一笔经费可以报销一定额度的发票.允许报销的发票类型包括买图书(A类).文具(B类).差旅(C类),要求每张发票的总额不得超过10 ...
- DP专题训练之HDU 1506 Largest Rectangle in a Histogram
Description A histogram is a polygon composed of a sequence of rectangles aligned at a common base l ...
- 树形dp专题总结
树形dp专题总结 大力dp的练习与晋升 原题均可以在网址上找到 技巧总结 1.换根大法 2.状态定义应只考虑考虑影响的关系 3.数据结构与dp的合理结合(T11) 4.抽直径解决求最长链的许多类问题( ...
- 决策单调性优化dp 专题练习
决策单调性优化dp 专题练习 优化方法总结 一.斜率优化 对于形如 \(dp[i]=dp[j]+(i-j)*(i-j)\)类型的转移方程,维护一个上凸包或者下凸包,找到切点快速求解 技法: 1.单调队 ...
- 状压dp专题复习
状压dp专题复习 (有些题过于水,我直接跳了) 技巧总结 : 1.矩阵状压上一行的选择情况 \(n * 2^n\) D [BZOJ2734][HNOI2012]集合选数 蒻得不行的我觉得这是一道比较难 ...
- 区间dp专题练习
区间dp专题练习 题意 1.Equal Sum Partitions ? 这嘛东西,\(n^2\)自己写去 \[\ \] \[\ \] 2.You Are the One 感觉自己智力被吊打 \(dp ...
随机推荐
- getParameter和getAttribute区别
(1)HttpServletRequest类有setAttribute()方法,而没有setParameter()方法 (2)当两个Web组件之间为链接关系时,被链接的组件通过getParameter ...
- python-面向对象-11-异常
异常 目标 异常的概念 捕获异常 异常的传递 抛出异常 01. 异常的概念 程序在运行时,如果 Python 解释器 遇到 到一个错误,会停止程序的执行,并且提示一些错误信息,这就是 异常 程序停止执 ...
- android奔溃日期一闪而过
Android Studio日期崩溃了一闪而过,看不到原因:可以设置No Filters就可以了
- MSMQ研究
开发过程记录如下: 1. 本机配置MSMQ ------控制面板-------启动或者关闭Windows功能----默认安装MSMQ即可 注意:本地安装后再VS中才能引用System.Messag ...
- [py]django上线部署-uwsgi+nginx+py3/django1.10
https://github.com/lannyMa/django-uwsgi-nginx.git 单机调试启动-确保项目代码没问题 - 克隆代码进入项目 git clone https://gith ...
- Python爬虫第一个成功版
爬取http://www.mzitu.com/all里面的图片 import urllib.request import re import os url = 'http://www.mzitu.co ...
- IDA 7.0在Mojava更新后打不开的问题
Mac升级到mojava后,ida 7.0打不开了. 上述是两种典型的窗口,不过不论是出现什么样的弹窗,如果是在升级之后出现的,都要试一下下面的解决办法.因为IDA7.0版本流出的比较多,虽然这个已经 ...
- Java-使用IO流对大文件进行分割和分割后的合并
有的时候我们想要操作的文件很大,比如:我们想要上传一个大文件,但是收到上传文件大小的限制,无法上传,这是我们可以将一个大的文件分割成若干个小文件进行操作,然后再把小文件还原成源文件.分割后的每个小文件 ...
- 软件包管理:rpm命令管理-校验和文件提取
校验主要用于判断文件是否做了更改 修改标志: 会用-V,会看输出结果即可. 当有误操作,比如删了某一个文件,只需知道他属于哪一个rpm包,可用提取找回覆盖就行.并不把整个rpm包安装,而是提取其中的某 ...
- windows上备份mysql数据库
方案一:采用mysql自带的工具mysqldump. 脚本文件backup.bat如下: set "YMD=%date:~,4%%date:~5,2%%date:~8,2%"cd ...