HDU 1423 最长公共字串+上升子序列
2016-03-16 14:03
363 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1423
在前一道题的基础上多了一次筛选
要选出一个最长的递增数列
lower_bound()函数很好用,二分搜索找出满足ai>k的ai最小指针
还有upper_bound()
头文件#include<algorithm>
比如求长度为n的数组a中k的个数:upper_bound(a,a+n,k)-lower_bound(a,a+n,k)
int 放在main函数里面声明会出现程序崩溃,放在全局就没有问题,这里不知原因
在前一道题的基础上多了一次筛选
要选出一个最长的递增数列
lower_bound()函数很好用,二分搜索找出满足ai>k的ai最小指针
还有upper_bound()
头文件#include<algorithm>
比如求长度为n的数组a中k的个数:upper_bound(a,a+n,k)-lower_bound(a,a+n,k)
int 放在main函数里面声明会出现程序崩溃,放在全局就没有问题,这里不知原因
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int INF = 0x3f3f3f3f; int i,j,n,m,h,a,b; int s[600],t[600],lable[600][600],dp[600][600]; int ai[600],dpp[600]; void mem() { memset(s,0,sizeof(s)); memset(t,0,sizeof(s)); memset(ai,0,sizeof(s)); memset(dpp,0,sizeof(s)); for(i=1;i<600;i++) { memset(dp[i],0,sizeof(s)); memset(lable[i],0,sizeof(s)); } } int main() { int NN; scanf("%d",&NN); while(NN--) { mem(); scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&s[i]); } scanf("%d",&m); for(i=0;i<m;i++) { scanf("%d",&t[i]); } for(i=0;i<n;i++) { for(j=0;j<m;j++) { if(s[i]==t[j]) { dp[i+1][j+1]=dp[i][j]+1; lable[i+1][j+1]=1; } else { if(dp[i][j+1]>dp[i+1][j]) { dp[i+1][j+1]=dp[i][j+1]; lable[i+1][j+1]=2; } else { dp[i+1][j+1]=dp[i+1][j]; lable[i+1][j+1]=3; } } } } a=n;b=m; h=dp [m]; while(lable[a][b]!=0) { if(lable[a][b]==1) { a--;b--;h--; ai[h]=s[a];//or t[b] } else if(lable[a][b]==2) { a--; } else if(lable[a][b]==3) { b--; } } fill(dpp,dpp+n,INF); h=dp [m]; for(i=0;i<h;i++) { *lower_bound(dpp,dpp+h,ai[i])=ai[i]; } cout<<lower_bound(dpp,dpp+n,INF)-dpp<<endl; if(NN) cout<<endl; } return 0; }
相关文章推荐
- spring4.1.6配置quartz2.2.1(maven) <转>
- iOS OC语言: Block底层实现原理
- 工具类一:字符串工具类
- JAVA_99乘法表(BufferFly)打印
- Leet Code OJ 110. Balanced Binary Tree [Difficulty: Easy]
- HashMap和ConcurrentHashMap研究
- 遮挡剔除技术分析
- 互联网TCP/IP五层模型(一)
- 4-5 链式表操作集
- C# 数组
- SYN591-B型 转速表
- 在PLSQL中编译复杂的java(转)
- 词频统计
- Activity.runOnUiThread(Runnable)简单介绍
- .sh脚本语法
- jdbc
- Android Studio Svn一般忽略哪些文件和文件夹
- maven-pom文件详解
- SYN591-A型 计数器
- python学习5 常用三方模块