DP整理(未完待续)
一、资源问题
T1 机器分配
已知条件:每家公司分配x台机器的盈利
令f[i][j]表示前i公司分配j台机器的最优解
转移:f[i][j]=max(f[i-1][j-k]+w[i][k])
初始化:f[1][i]=w[1][i]
枚举第i个公司分配k台(直接利用已知条件),那前i-1个公司分配j-k台
T5 化工厂装箱员
一段包含A、B、C的排列,区间从左往右扫,每次区间包含10个元素,每次将区间内所有的A或B或C删除,区间再往右扩张至10个元素,问最小删除次数
令f[d][a][b][c]表示区间总共覆盖了d个数,这一次区间内有a个A,b个B,c个C的最优解
初始化:f最大值
状态转移:f[d][a][b][c]=min(f[d][0][b][c],f[d][a][0][c],f[d][a][b][0])+1
有了第一维d,防止了f状态的重复
二、上升子序列问题
T1 朴素的最长上升子序列
n2:f[i]=j 以第i个数结尾的最长上升子序列长度为j
nlogn:f[i]=j 长度为i的最长上升子序列中,第i个数最小是j
T2 包含第k个数的最长上升子序列
设第k个数为m
删去k前面>=m的,k后面<=m的,同上
k前>=m的删去后,k前面的最长上升子序列的最大值一定比m小,加上m后一定比原来更优
k后<=m的删去后,防止了答案绕过第k个数
T3 最长上升子序列划分
将上升子序列分成2部分==>最长不上升子序列长度<=2
三、线型DP
T1、舞蹈家怀特先生
f[i][l][r]跳了i步,第i步左脚在l,右脚在r的最优解
预处理:move[i][j] 从i移向j所需的代价
状态转移:f[i][l][r]=min(min(f[i][x][r]+move[x][l]),min(f[i][l][x]+move[x][r]))
特殊处理:第一步到两脚都迈出第一步
T2、绿色通道
n道题,解决每个题需要一定时间,每个题可以解决,也可以空过去,给出时间总限制,最小化最大空题段
令f[i]表示抄第i道题所花费的最小时间
状态转移方程:f[i]=min(f[j])+time[i] max(0,i-mid-1)<=j<=i-1
初始化:f数组极大值,f[0]=0
注:本体朴素的DP会TLE,所以要用线段树或单调队列优化
T3、积木游戏
n个积木堆m堆,满足堆与堆之间各积木序号升序,每堆内部从下往上积木序号升序
f[k][i][j][l] 表示 前i个积木分为k组,第k组最后一个是j,j的摆放方式为l的最大高度
状态转移:
① 与前面积木合为一组 f[k][i][i][l]=max(f[k][i][j][t])+high[i]
② 自己另放一组 f[k][i][i][l]=max(f[k-1][i-1][j][t])+high[i]
③ 不放 f[k][i][j][l]=f[k][i-1][j][l]
其中0<=j<i 0<=t<=2
状态压缩:
0 表示 ab面为底;1 表示 ac面为底; 2表示bc面为底
ans=max(f[m][n][i][j]) 1<=i<=n,0<=j<=2
编程复杂度优化:
先对输入每块积木的a,b,c排序,这样在DP中就不用判断同一块积木的长宽高
T4 、括号序列(加括号使之成为规则序列)
f[i][j] 序列i——j 成为规则序列最少添加多少
状态转移:if(i与j能匹配) f[i][j]=f[i+1][j-1]
f[i][j]=min(f[i][k]+f[k+1][j]) i<=k<j
初始化:f[i][i]=1
f[i][j]=0 (i>j)
其余极大值
四、划分型DP
T1 乘积最大
f[i][j]表示前i个数添加了j个乘号的最优解
预处理:w[i][j] 第i-j的数
状态转移:f[i][j]=max(f[k][j-1]*w[k+1][i])
T2 数的划分
将n划分为几个可重复正整数之和的方案数,顺序不同视为同种方案
f[i][j] 把i划分为j个正整数的方案数
状态转移:f[i][j]=f[i-1][j-1]+f[i-j][j]
初始化:f[0][0]=1
T3 统计单词个数
f[i][j] 前i个字母划分为j段的最优解(最多单词个数)
预处理:w[i][j] 第i到j个字母的单词数
状态转移:f[i][j]=max(f[k][j-1]+w[k+1][i])
初始化:f[i][1]=w[1][i]
T4 数字游戏
f[i][j][k] 第i—j个数划分为k个部分的最优解(各部分和的乘积)
预处理:w[i][j] 第i—j个数的和
状态转移:f[i][j][k]=max(f[i][l][k-1]*w[l+1][j])
预处理:f[i][j][1]=w[i][i]
五、棋盘DP
T1 棋盘分割
DP整理(未完待续)的更多相关文章
- hdu2476【区间DP,未完待续】
好难搞得东西.... 题意都懒得写了,看题解的巨巨莫怪啊,未完待续未完待续,回去睡觉.
- sublime常用快捷键整理(未完待续)
sublime常用快捷键整理: 基本操作 cmd+o 打开文件 cmd+w 关闭当前tab cmd+n 打开新页 cmd+shift+n 打开刚刚关闭的页签 一.选择命令 1.多个单词选择 cmd+d ...
- lightoj 1031【区间DP,未完待续】
题意: 给你一个n,再给你n个数,每个数<1e4; 有两个player交替取数字,每个人每一次能拿一个或多个,交替在两边拿. 游戏终止在所有的数字被取完. 两个人的分数就是所取得的数字大小总和. ...
- ASP.NET MVC 系列随笔汇总[未完待续……]
ASP.NET MVC 系列随笔汇总[未完待续……] 为了方便大家浏览所以整理一下,有的系列篇幅中不是很全面以后会慢慢的补全的. 学前篇之: ASP.NET MVC学前篇之扩展方法.链式编程 ASP. ...
- 布隆过滤器(Bloom Filter) 未完待续
布隆过滤器雏形 未完待续..... 计算错误率 现在有一个空额布隆过滤器, 过滤器里的bit array的大小是m. 咱来插入一个元素. 这次插入过程中的第一个hash函数会算出一个位置, 然后把这个 ...
- 从Socket入门到BIO,PIO,NIO,multiplexing,AIO(未完待续)
Socket入门 最简单的Server端读取Client端内容的demo public class Server { public static void main(String [] args) t ...
- javascript有用小功能总结(未完待续)
1)javascript让页面标题滚动效果 代码如下: <title>您好,欢迎访问我的博客</title> <script type="text/javasc ...
- 关于DOM的一些总结(未完待续......)
DOM 实例1:购物车实例(数量,小计和总计的变化) 这里主要是如何获取页面元素的节点: document.getElementById("...") cocument.query ...
- 我的SQL总结---未完待续
我的SQL总结---未完待续 版权声明:本文为博主原创文章,未经博主允许不得转载. 总结: 主要的SQL 语句: 数据操作(select, insert, delete, update) 访问控制(g ...
- virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续)
virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续) 第一次接触到 linux,不知道linux的确很强大,然后用virtualbox ...
随机推荐
- SpringMVC(二)-- springmvc的系统学习之跳转结果的方式
资源: 尚学堂 邹波 springmvc框架视频 若无特别注明,例子项目的配置方式为注解 一.设置ModelAndView对象. 1.根据View的名称和视图解析器跳转到指定的页面. 2.跳转的 ...
- Mutual and feedback(互评与反馈)
互评与反馈: 注:我在收集各小组对我小组的评价了,发现有几个没有收集到,不知道是我看不到还是贵小组不小心遗漏了对我小组的评价,如果看到,请给我留意,谢谢! 组名 对我 ...
- week4a:个人博客作业
本周结对项目的要求: 黄金点游戏是一个数字小游戏,其游戏规则是: N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.6 ...
- 14_Java面向对象_第14天(Eclipse高级、类与接口作为参数返回值)_讲义
今日内容介绍 1.Eclipse常用快捷键操作 2.Eclipse文档注释导出帮助文档 3.Eclipse项目的jar包导出与使用jar包 4.不同修饰符混合使用细节 5.辨析何时定义变量为成员变量 ...
- python 菜鸟入门
python 菜鸟博客: http://www.cnblogs.com/wupeiqi/articles/5433893.html http://www.cnblogs.com/linhaifeng/ ...
- ACM数论之旅14---抽屉原理,鸽巢原理,球盒原理(叫法不一又有什么关系呢╮(╯▽╰)╭)
这章没有什么算法可言,单纯的你懂了原理后会不会运用(反正我基本没怎么用过 ̄ 3 ̄) 有366人,那么至少有两人同一天出生(好孩子就不要在意闰年啦( ̄▽ ̄")) 有13人,那么至少有两人同一月 ...
- wai
外键的过滤是怎么做的, 一个class有两个外键A和B,其中A又是B的外键,在这种情况下,比如A选择了学校之后,可否在B中过滤出A学校的所有的专业?也就是说在选择的时候能不能按照已经填好的一个选项来选 ...
- mybatis映射文件的使用(一),工程目录结构、源代码和数据库
代码开发环境 开发工具为IDEA 工程构建方式为maven 数据库为mysql 5.7.20 mybatis版本为 3.1.1 mysql-connect-java jar包版本为 5.1.34 数据 ...
- 一个不错的微信应用JS API库
1.API能实现什么? 1.分享到微信朋友圈 2.分享给微信好友 3.分享到腾讯微博 4.新的分享接口,包含朋友圈.好友.微博的分享(for iOS) 5.隐藏/显示右上角的菜单入口 6.隐藏/显示底 ...
- using关键字
声明导入名称空间 处理实现了IDisposeable的对象,并在作用域末尾调用Dispose方法