CH5101 LICS//hdu5904 LICS

Posted saigyouji-yuyuko

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CH5101 LICS//hdu5904 LICS相关的知识,希望对你有一定的参考价值。

恭喜我已经正式沦为pj组选手QwQ

标题两个题其实不一样的。这是ch   这是hdu


一、CH上的:裸题,求LICS。n<=3000

经典普及组dp题,题解烂大街了。所以对于这题,只讲细节:

$1.A_i=B_j时的转移(或者说继承)f[i][j]=f[i-1][j]可有可无。$

$可以想到两个末尾相等时由A的前i-1个,B不以B_j为结尾的状态转移$

$LICS长最多少掉一个。$

$那么这样取到的前面max(f[i-1][k])至少会是f[i-1][j]-1,再加上最后相等的1个$

$一定不会比f[i-1][j]差。所以这句有无皆可。(当然我自己写是不会想这么多的)$

$2.前缀max优化,这个不必说了$

我好菜啊啊啊 啊啊啊啊啊 啊啊啊啊

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<algorithm>
 6 #include<queue>
 7 #define dbg(x) cerr<<#x<<" = "<<x<<endl
 8 #define ddbg(x,y) cerr<<#x<<" = "<<x<<"   "<<#y<<" = "<<y<<endl
 9 using namespace std;
10 typedef long long ll;
11 template<typename T>inline char MIN(T&A,T B){return A>B?A=B,1:0;}
12 template<typename T>inline char MAX(T&A,T B){return A<B?A=B,1:0;}
13 template<typename T>inline T _min(T A,T B){return A<B?A:B;}
14 template<typename T>inline T _max(T A,T B){return A>B?A:B;}
15 template<typename T>inline T read(T&x){
16     x=0;int f=0;char c;while(!isdigit(c=getchar()))if(c==-)f=1;
17     while(isdigit(c))x=x*10+(c&15),c=getchar();return f?x=-x:x;
18 }
19 const int N=3000+7;
20 int f[N][N],a[N],b[N],m,n,maxv,ans;
21 
22 int main(){//freopen("test.in","r",stdin);//freopen("test.out","w",stdout);
23     m=read(n);
24     for(register int i=1;i<=n;++i)scanf("%d",&a[i]);for(register int i=1;i<=n;++i)scanf("%d",&b[i]);
25     for(register int i=1;i<=n;++i){
26         maxv=0;
27         for(register int j=1;j<=m;++j){
28             if(a[i]==b[j])f[i][j]=maxv+1;
29             else f[i][j]=f[i-1][j],b[j]<a[i]?MAX(maxv,f[i-1][j]):0;
30             MAX(ans,f[i][j]);
31         }
32     }
33     return printf("%d
",ans),0;
34 }

二、hdu上的:跪于英语不好。。

Original:He wants find a longest common subsequence that consists of consecutive values in increasing order.

也就是LICS要求是连续上升的(也就是公差是1)

那这不就简单了么。

两数组各做一遍dp,求以这个数结尾的最大连续长度。最后比对一下。

没了。code不放了。

以上是关于CH5101 LICS//hdu5904 LICS的主要内容,如果未能解决你的问题,请参考以下文章

CH 5101 最长公共上升子序列

LICS

LICS O(n*m)+前驱路径

HDU 1423 LICS 模板

LCS,LIS,LICS算法

LIS,LCS,LICS模板