HDU1423 LCIS
1,先离散化,然后DP:
注意这个解法中,dp[i][j][k]代表a序列中前i个和b序列中前j个数结尾为k或小于k时的最大。
但是由于i是单增(一次1->n),而j反复变化(多次1->m),因此i可以滚动,而j不可以。
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<map>
using namespace std;
int x[],y[],xx[],yy[],dp[][][];
int tmp[],cnt,m,n,Max;
map<int,int>q;
void _lisan()
{
int i,j;
q.clear();
cnt=;
scanf("%d",&n);
for(i=;i<=n;i++) {
scanf("%d",&x[i]);
tmp[i]=x[i];
}
scanf("%d",&m);
for(i=;i<=m;i++) {
scanf("%d",&y[i]);
tmp[n+i]=y[i];
}
sort(tmp+,tmp+m+n+);
q[tmp[]]=++cnt;
for(i=;i<=m+n;i++)
if(tmp[i]!=tmp[i-]) q[tmp[i]]=++cnt;
for(i=;i<=n;i++)xx[i]=q[x[i]];
for(i=;i<=m;i++)yy[i]=q[y[i]];
memset(dp,,sizeof(dp));
Max=;
}
int main()
{
int T,i,j,k;
cin>>T;
while(T--){
_lisan();
for(i=;i<=n;i++)
for(j=;j<=m;j++)
{
if(xx[i]==yy[j]){
dp[i%][j][xx[i]]=max(dp[i%][j][xx[i]],dp[(i+)%][j-][xx[i]-]+);
}
for(k=;k<=cnt;k++)
{
dp[i%][j][k]=max(dp[i%][j][k],dp[(i+)%][j][k]);
dp[i%][j][k]=max(dp[i%][j][k],dp[i%][j][k-]);
dp[i%][j][k]=max(dp[i%][j][k],dp[i%][j-][k]);
}
}
printf("%d\n",dp[n%][m][cnt]);
if(T)printf("\n");
}
return ;
}
2, LCIS套模板:
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
#define maxn 1000+5
using namespace std;
int a[maxn],b[maxn];
int f[maxn];
int n,m;
int LCIS()
{
int ans=;
for(int i=;i<=n;i++){
int tmp=;
for(int j=;j<=m;j++){
if(a[i]==b[j]) f[j]=tmp+;
else if(a[i]>b[j]){
if(tmp<f[j])
tmp=f[j];
}
}
}
for(int i=;i<=m;i++)
ans=max(ans,f[i]);
return ans;
}
int main()
{
int T;
cin>>T;
while(T--){
memset(f,,sizeof(f)) ;
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
scanf("%d",&m);
for(int i=;i<=m;i++)
scanf("%d",&b[i]);
printf("%d\n",LCIS());
if(T)printf("\n");
}
}
HDU1423 LCIS的更多相关文章
- HDU4512完美队形I && HDU1423 Greatest Common Increasing Subsequence (LCIS)
填坑的时候又到啦,校赛因为不会LCIS所以吃了大亏,这里要补起来.LCIS就是在两个串里找最长上升子序列,相关的博客有很多,这里自己就不写那么多了. http://www.cnblogs.com/ja ...
- HDU-1423 最长公共上升子序列(LCIS)
问题描述: 给定两个字符串x, y, 求它们公共子序列s, 满足si < sj ( 0 <= i < j < |s|).要求S的长度是所有条件序列中长度最长的. 做过最长公共子 ...
- HDU1423 最长公共上升子序列LCIS
Problem Description This is a problem from ZOJ 2432.To make it easyer,you just need output the lengt ...
- LCS(记录路径)+LIS+LCIS
https://blog.csdn.net/someone_and_anyone/article/details/81044153 当串1 和 串2 的位置i和位置j匹配成功时, dp[i][j]=d ...
- BestCoder Round #87 1003 LCIS[序列DP]
LCIS Accepts: 109 Submissions: 775 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65 ...
- LCIS(最长公共上升子序列)Vijos1264神秘的咒语
描述 身为拜月教的高级间谍,你的任务总是逼迫你出生入死.比如这一次,拜月教主就派你跟踪赵灵儿一行,潜入试炼窟底. 据说试炼窟底藏着五行法术的最高法术:风神,雷神,雪妖,火神,山神的咒语.为了习得这些法 ...
- 最长公共上升子序列(LCIS)
最长公共上升子序列慕名而知是两个字符串a,b的最长公共递增序列,不一定非得是连续的.刚开始看到的时候想的是先用求最长公共子序列,然后再从其中找到最长递增子序列,可是仔细想一想觉得这样有点不妥,然后从网 ...
- hdu-5904 LCIS(水题)
题目链接: LCIS Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...
- LCIS HDOJ 4512 吉哥系列故事——完美队形I
题目传送门 题意:中文题面 分析:LCIS应用:设置b[]为a[]的反转,然后LCIS,若相等的是自己本身,则+1, 否则+2 代码: #include <cstdio> #include ...
随机推荐
- HTTP请求范例
package com.grefr.basemethod; /*JAVA发送HTTP请求,返回HTTP响应内容,实例及应用 博客分类: JAVA实现 Java.netBeanJDKApache . J ...
- android-学习1 配置环境
转载注明出处,谢谢--http://www.cnblogs.com/JK-HYJ/ 前提:电脑先配置好java的环境-- adk_bundle下载安装地址:http://tools.android-s ...
- Git简易参考手册
如果用过mercury(HG),那么理解Git的运作方式就轻松多了.两者是相同的分布式版本管理工具,只是某些功能有着细微的差别 - Git的管理粒度更加细腻,因此操作上也比HG复杂一点.例如,修改文件 ...
- web服务的三大主流架构
1.远程过程调用 2.服务导向架构 3.表述性状态转移 今天在自学Spring架构时貌似发现 rest的表现.与RPC方式的最大差别,SOA方式更加关注如何去连接服务而不是去特定某个实现的细节.而re ...
- Jquery的同步和异步请求
1 异步请求: 1.1 $.ajax $.ajax({ url : 'your url', data:{name:valu ...
- 201521123053《Java程序设计》第十三周学习总结
1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 TCP和UDP两者之间的区别: UDP:1)将数据及源和目的封装成数据包中,不需要建立连接 ...
- 201521123113《Java程序设计》第11周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 Q1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) ...
- 201521123085 《Java程序设计》第12周学习总结
1. 本周学习总结 2. 书面作业 将Student对象(属性:int id, String name,int age,double grade)写入文件student.data.从文件读出显示. 1 ...
- 笔记3 linux 多线程 条件变量+互斥锁
//cond lock #include<stdio.h> #include<unistd.h> #include<pthread.h> struct test { ...
- sqlserver2012 密码过期问题
昨天登录系统突然连不上数据库了看了看报错内容提示是sqlserver的用户密码过期,那么就简单记录下操作,方便孩子后解决 (1)首先打开sql Management Studio 2012 顺便提一下 ...