CH5101 LCIS

题意:

求两个长度不超过3000的序列的最长公共上升子序列

思路:

  • 朴素解法:用f[i,j]表示a1~ai与b1~bj可以构成的以bj为结尾的LCIS的长度,三重循环求解:
for(res i= ; i<=n ; i++)
for(res j= ; j<=m ; j++)
if(a[i]==b[j])
{
  for(res k= ; k<j ; k++)
if(b[k]<a[i])//a[i]=b[j]
f[i][j]=max(f[i][j],f[i-][k]+);
}
else
f[i][j]=f[i-][j];
  • 经过观察可以发现:当外层的i固定时,条件b[k]<a[i]也是固定的,所以当j增加1时,k的取值范围也只增加了1,即只有j可能进入新的决策集合,则可以优化为两重循环:
 #include <cstdio>
#include <iostream>
#include <cstring>
using namespace std; const int N=;
int a[N],b[N];
int f[N][N];
int n; int main()
{
scanf("%d",&n);
for(int i= ; i<=n ; i++) scanf("%d",&a[i]);
for(int i= ; i<=n ; i++) scanf("%d",&b[i]); for(int i= ; i<=n ; i++)
{
int val=;//表示决策集合(即f[i-1][k]的最大值)
for(int j= ; j<=n ; j++)
{
if(a[i]==b[j]) f[i][j]=val+;
else f[i][j]=f[i-][j];
if(b[j]<a[i])//更新决策集合
val=max(val,f[i-][j]);
}
}
int ans=;
for(int i= ; i<=n ; i++)
ans=max(ans,f[n][i]);
printf("%d\n",ans);
return ;
}

  

CH5101 LCIS的更多相关文章

  1. CH5101 LCIS【线性dp】

    5101 LCIS 0x50「动态规划」例题 描述 熊大妈的奶牛在小沐沐的熏陶下开始研究信息题目.小沐沐先让奶牛研究了最长上升子序列,再让他们研究了最长公共子序列,现在又让他们研究最长公共上升子序列了 ...

  2. CH5101 LCIS(最长公共上升子序列) 题解

    每日一题 day16 打卡 Analysis 设F[i,j]表示A[1..i]与B[1..j]并且以B[j]结尾的两段最长公共上升子序列,那么我们可以发现这样的转移 (1)A[i]==B[j]时 F[ ...

  3. 常规DP专题练习

    POJ2279 Mr. Young's Picture Permutations 题意 Language:Default Mr. Young's Picture Permutations Time L ...

  4. csp-s 考前刷题记录

    洛谷 P2615 神奇的幻方 洛谷 P2678 跳石头 洛谷 P1226 [模板]快速幂||取余运算 洛谷 P2661 信息传递 LOJ P10147 石子合并 LOJ P10148 能量项链 LOJ ...

  5. BestCoder Round #87 1003 LCIS[序列DP]

    LCIS  Accepts: 109  Submissions: 775  Time Limit: 4000/2000 MS (Java/Others)  Memory Limit: 65536/65 ...

  6. LCIS(最长公共上升子序列)Vijos1264神秘的咒语

    描述 身为拜月教的高级间谍,你的任务总是逼迫你出生入死.比如这一次,拜月教主就派你跟踪赵灵儿一行,潜入试炼窟底. 据说试炼窟底藏着五行法术的最高法术:风神,雷神,雪妖,火神,山神的咒语.为了习得这些法 ...

  7. 最长公共上升子序列(LCIS)

    最长公共上升子序列慕名而知是两个字符串a,b的最长公共递增序列,不一定非得是连续的.刚开始看到的时候想的是先用求最长公共子序列,然后再从其中找到最长递增子序列,可是仔细想一想觉得这样有点不妥,然后从网 ...

  8. hdu-5904 LCIS(水题)

    题目链接: LCIS Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  9. LCIS HDOJ 4512 吉哥系列故事——完美队形I

    题目传送门 题意:中文题面 分析:LCIS应用:设置b[]为a[]的反转,然后LCIS,若相等的是自己本身,则+1, 否则+2 代码: #include <cstdio> #include ...

随机推荐

  1. UIImage分类,设置边框

    #import "UIImage+image.h" @implementation UIImage (image) + (UIImage *)imageWithBorder:(CG ...

  2. Opencv 亚像素级别角点检测

    Size winSize = Size(5,5); Size zerozone = Size(-1,-1); TermCriteria tc = TermCriteria(TermCriteria:: ...

  3. Oracle表格字段采用sequence进行自增长时,采用Dbutils进行insert或update数据时的处理技巧

    // 定义插入记录的方法 public Teacher insert(String name, String gender, Double score) { // 获得连接 Connection co ...

  4. 处理事件冒泡,阻止默认事件工具类,兼容IE

    //处理事件冒泡,阻止默认事件工具类,兼容IEvar eventUtil={ // 添加句柄 addHandler:function(element,type,handler){ if(element ...

  5. 在Qt中使用SQLite数据库

    前言 SQLite(sql)是一款开源轻量级的数据库软件,不需要server,可以集成在其他软件中,非常适合嵌入式系统. Qt5以上版本可以直接使用SQLite(Qt自带驱动). 用法 1 准备 引入 ...

  6. mvc注解验证

    前端: @{ Layout = null;}@using System.Activities.Expressions@model MvcApplication1.Models.News<!DOC ...

  7. transition与animation的区别

    transition需要事件触发,animation可以直接自动触发,而且功能上更为强大,包括可以设置不同时间段的动画规则,还有状态的控制,事件等等.

  8. QML的默认属性default property

    qml中,普通的属性,需要添加属性名称,属性内容,如 color: “red” 默认属性则可以直接书写,去掉方括号,在写重用的QML组件式比较有用,例如将一个QmL外部资源封装好,内部具体的item, ...

  9. 在Chrome 39中无法使用插件

    在chrome 42+版本中在开启npapi选项.   1.打开插件面板,在地址栏中输入 chrome://plugins   2.找到npScreenCapture插件,点击始终允许选框 3允许控件

  10. 设计模式13---桥接模式(Bridge Pattern)

    桥接模式将抽象与具体实现分离,使得抽象与具体实现可以各自改变互不影响.桥接模式属于设计模式中的结构模式. 桥梁模式涉及的角色 抽象(Abstraction)角色:抽象定义,引用对接口对象的引用. 重新 ...