POJ-动态规划-典型问题模板
一、最长上升子序列(Longest increasing subsequence)
状态(最关键):f[N]为动规数组,f[i]表示从第一个字符开始,以a[i]为最后一个字符的序列的最长递增子序列的长度。
由状态引出状态转移方程,因为f[i]的设定,所以可以去比较最后一个字符从而更新f[i];
- f[0]=1;
- 对于f[i],从第一个字符开始遍历0-(i-1)字符,if(a[i]>a[j]) f[i]=max(f[i],f[j]+1),从而找到最大值。
- 初始化时可以设置f[i]=1,这样方便max比较。
- 另外,f[n-1]只是以最后一个字符为结尾的子序列的最大长度,所以要得出LIS还需要遍历f[]。
例题:POJ2533 Longest Ordered Subsequence
AC代码
#include<iostream>
#include<algorithm>
using namespace std; int main()
{
int f[];
int a[];
int n;
cin >> n;
for (int i = ; i < n; i++)cin >> a[i];
f[] = ;
for (int i = ; i < n; i++)
{
f[i] = ;
for (int j = ; j < i; j++)
{
if (a[j] < a[i])f[i] = max(f[i], f[j] + );
}
}
int ans = ;
for (int i = ; i < n; i++)ans = max(ans, f[i]);
cout << ans << endl;
return ;
}
POJ-动态规划-典型问题模板的更多相关文章
- poj 动态规划题目列表及总结
此文转载别人,希望自己能够做完这些题目! 1.POJ动态规划题目列表 容易:1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 11 ...
- poj动态规划列表
[1]POJ 动态规划题目列表 容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276, 13 ...
- POJ 动态规划题目列表
]POJ 动态规划题目列表 容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276, 1322 ...
- poj 动态规划的主题列表和总结
此文转载别人,希望自己可以做完这些题目. 1.POJ动态规划题目列表 easy:1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, ...
- Sliding Window POJ - 2823 单调队列模板题
Sliding Window POJ - 2823 单调队列模板题 题意 给出一个数列 并且给出一个数m 问每个连续的m中的最小\最大值是多少,并输出 思路 使用单调队列来写,拿最小值来举例 要求区间 ...
- {POJ}{动态规划}{题目列表}
动态规划与贪心相关: {HDU}{4739}{Zhuge Liang's Mines}{压缩DP} 题意:给定20个点坐标,求最多有多少个不相交(点也不相交)的正方形 思路:背包问题,求出所有的正方形 ...
- poj 3164(最小树形图模板)
题目链接:http://poj.org/problem?id=3164 详细可以看这里:http://www.cnblogs.com/vongang/archive/2012/07/18/259685 ...
- poj 1006中国剩余定理模板
中国剩余定理(CRT)的表述如下 设正整数两两互素,则同余方程组 有整数解.并且在模下的解是唯一的,解为 其中,而为模的逆元. 模板: int crt(int a[],int m[],int n) { ...
- [转载 ]POJ 1273 最大流模板
转载 百度文库花了5分下的 不过确实是自己需要的东西经典的最大流题POJ1273 ——其他练习题 POJ3436 . 题意描述: 现在有m个池塘(从1到m开始编号,1为源点,m为汇点),及n条水渠,给 ...
随机推荐
- [個人紀錄] regular 搜集
判斷有理數 ^(0|[1-9]([0-9]{1,5})?)((\.(([0-9]{1,5})?[1-9])))?$
- 【转载】 C#中ArrayList使用ToArray方法转换为数组
在C#的编程开发中,ArrayList集合是一个常用的非泛型类集合,可以使用ArrayList中的ToArray方法将ArrayList集合对象转换为数组,ToArray方法有2个重载形式,其一为vi ...
- 默认展开ztree树形菜单
var setting = { view: { selectedMulti: false //按住ctrl是否可以多选 }, check: { enable: true , chkStyle: 'ch ...
- kubernetes学习之service、deployment、pod的关系
deployment根据Pod的标签关联到Pod,是为了管理pod的生命周期 service根据Pod的标签关联到pod,是为了让外部访问到pod,给pod做负载均衡 需要注意: deployment ...
- linux中find命令的使用详解(转载)
常用命令 find (目录) [-type d | f] (文件夹 | 文件) -name (名称,可使用正则表达式) find /root -name "*core&q ...
- MySQL Execution Plan--使用Query Rewrite
安装Query Rewrite Plugin 在MySQL的安装目录的share文件夹下,有两个文件用来安装和卸载Query Rewrite Plugin: install_rewriter.sql: ...
- CPU使用率与负载的爱恨情仇
今天有一个电话面试,面试官问我:CentOS怎么查看CPU负载?我说:看top的第一行有load average.面试官又问:为什么从这就判定是负载高呢?依据是什么呢?然后... 然后我就尴尬了,挂了 ...
- django_restframework项目之python虚拟环境配置(一)
虚拟环境的搭建 优点 1.使不同应用开发环境相互独立 2.环境升级不影响其他应用,也不会影响全局的python环境 3.防止出现包管理混乱及包版本冲突 windows 安装 # 建议使用pip3安装到 ...
- Linux文件服务管理之Samba
Linux文件服务器的搭建 Samba vsftpd nfs Samba服务 作用:共享目录 ...
- 使用aptitude安装软件
linux的版本依赖问题很令人纠结,不过我们可以通过使用aptitude软件包管理器来解决这个依赖问题,aptitude是可以选择合适的版本与匹配软件安装.