最长非降/下降子序列问题(DP)(待续...)
注意:抽象成以下描述即为最长非降/下降子序列问题(一维状态)
问题描述:在一个无序的序列a1,a2,a3,a4…an里,找到一个最长的序列满足:(不要求连续)
ai<=aj<=ak…<=am,且i<j<k…<m.(最长非降子序列)
或 ai>aj>ak…>am,且i<j<k…<m.(最长下降子序列)。
问题分析:(以最长非降子序列为例)
考虑状态数组opt[maxn]; 其中opt[i]表示a[i]时可与之前元素构成非降子序列的最大长度;可参考模板(随个人喜好,不唯一):
for(int i = ; i <= n; i++)
{
scanf("%d", &array[i][]);
array[i][] = ; //初始化到a[i]为止最长子序列长度为1;
}
for(int i = ; i <= n; i++)
{
int len = ;
for(int j = ; j < i; j++) //a[i]前的最长子序列
{
if(array[j][] >= array[i][] && array[j][] > len) //注意此处的判断条件
{
len = array[j][];//更新最长最序列长度
}
}
if(len > )
array[i][] = len + ;//记录并更新a[i]处最长子序列长度
}
for(int i = ; i <= n; i++)
{
scanf("%d", &array[i]);
opt[i] = ; //初始化到a[i]时的最长子序列长度为1;
}
for(int i = ; i <= n; i++)
{
int len = ;
for(int j = ; j < i; j++)//a[i]前的子序列长度
{
if(array[j] >= array[i] && opt[j] > len)//注意此处的判断条件, 若求下降子序列则只需将>=改为<
{
len = opt[j];//更新最长子序列长度
}
}
if(len > )
opt[i] = len + ;//a[i]时子序列长度+1
}
最长非降/下降子序列问题(DP)(待续...)的更多相关文章
- 求最长非降(递增)子序列LIS的长度,及注意事项
非降序列(Increasing Sequence)例如: (1) 完全递增型序列:S={1,3,6,7,9} (2) 部分存在等于的序列:S={1,3,3,6,9} S的非降子序列:由原序列S的元素组 ...
- DP:凑零钱问题/最长非降子序列(C++)
你给出一定数额的钱 i 元给我,我利用手中的硬币(m元, j元, k元...)兑换等值的钱给你,要求硬币数最少. 举例:给出1-11的钱,手中硬币有1元,3元,5元. 重点是找到状态和状态转移方程. ...
- Codeforces Round #198 (Div. 2) D. Bubble Sort Graph (转化为最长非降子序列)
D. Bubble Sort Graph time limit per test 1 second memory limit per test 256 megabytes input standard ...
- 最长非降子序列的O(n^2)解法
这次我们来讲解一个叫做"最长非下降子序列"的问题及他的O(n^2)解法. 首先我们来描述一下什么是"最长非下降子序列". 给你一个长度为n的数组a,在数组a中顺 ...
- 最长非降子序列的N*logN解法
之前讲到过求最长非降子序列的O(N^2)解法. 链接 这次在原来的基础上介绍一下N*logN解法. 该解法主要是维护一个数组minValue,minValue[i]表示最长上身子序列长度为i的数的最小 ...
- Codeforces Round #323 (Div. 2) Once Again... CodeForces - 582B 最长非下降子序列【dp】(不明白)
B. Once Again... time limit per test 1 second memory limit per test 256 megabytes input standard inp ...
- 最长不下降子序列//序列dp
最长不下降子序列 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 求最长不下降子序列的长度 输入格式 第一行为n,表示n个数第二行n个数 输出格式 最长不下降 ...
- luogu2766 最长不下降子序列问题 DP 网络流
题目大意:给定正整数序列x1,...,xn .(1)计算其最长不下降子序列的长度s.(不一定是否连续)(2)计算从给定的序列中最多可取出多少个长度为s的不下降子序列.(序列内每一个元素不可重复)(3) ...
- hdu 5532 Almost Sorted Array nlogn 的最长非严格单调子序列
Almost Sorted Array Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Ot ...
随机推荐
- hadoop conf中xml文件修改
core-site.xml <?xml version="1.0"?><?xml-stylesheet type="text/xsl" hre ...
- HDU 2586 How far away ? (LCA)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2586 LCA模版题. RMQ+LCA: #include <iostream> #incl ...
- c# 如何使用DLL的config文件中的信息
我知道用c#编写的exe程序可以读取config文件中的配置信息,比如Test.exe,可以在与Test.exe相同目录下放置一个config文件:Test.exe.config,用System.Co ...
- android studio 2.0 Gradle HttpProxy 设置
Android Studio 一直Failed to import Gradle project: Connection timed out: connect Android Studio 2.0 里 ...
- VHD_Update_diskpart
###################功能说明########################该脚本用来对离线VHD文件更新,导入系统补丁############################### ...
- 自己写一个jQuery垂直滚动栏插件(panel)
html中原生的滚动栏比較难看,所以有些站点,会自己实现滚动栏,导航站点hao123在一个側栏中,就自己定义了垂直滚动栏,效果比較好看,截图例如以下: watermark/2/text/aHR0cDo ...
- 【HTML】心愿墙 Demo展示
这是跟着一个大神做的心愿墙,当时觉得有趣,现在清理磁盘中,所以就放到博客园中进行保存. 效果如下: 下载地址:点击下载
- Java多线程模式(二)
Guarded Suspension Pattern 该模式描述的是当一个线程在执行某个操作时,但由于其他资源还没有准备好,需要等待,那么就等待资源准备好才开始自己的操作.我们直接看代码例子 ...
- springMVC3学习(九)--redirect和forward跳转
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import ...
- Apache Httpd通过mod_jk连接多个Tomcat
一个tomcat能够配置多个web apps,这是众所周知的.当更改了一个web app,想要又一次启动的时候.因为全部的web apps都是放在同一个tomcat下的,所以别的web apps也在重 ...