LIS和LCS的结合。

容易写出方程,复杂度是nm2,但我们可以去掉一层没有必要的枚举,用一个变量val记录前一阶段的最优解,这样优化成nm。

1<=k<j,j增加1,k的上界也增加1,就可以考虑用变量优化去掉一层循环。

 1 #include<cstdio>
2 #include<cstring>
3 #include<algorithm>
4 using namespace std;
5 const int maxn=505;
6 int n,m,T,ans;
7 int a[maxn],b[maxn],dp[maxn][maxn];
8
9 int solve(int *a,int n,int *b,int m){
10 ans=0;
11 memset(dp,0,sizeof(dp));
12 for(int i=1;i<=n;i++){
13 int val=0;//记录决策集合S(i,j)中dp[i-1][k]的最大值
14 for(int j=1;j<=m;j++){
15 if(a[i]!=b[j]) dp[i][j]=dp[i-1][j];
16 else dp[i][j]=val+1;
17 if(b[j]<a[i]) val=max(val,dp[i-1][j]);
18 ans=max(dp[i][j],ans);
19 }
20 }
21 return ans;
22 }
23
24 int main(){
25 scanf("%d",&T);
26 while(T--){
27 scanf("%d",&n);
28 for(int i=1;i<=n;i++)
29 scanf("%d",&a[i]);
30 scanf("%d",&m);
31 for(int j=1;j<=m;j++)
32 scanf("%d",&b[j]);
33 printf("%d\n",solve(a,n,b,m));
34 if(T) printf("\n");
35 }
36 return 0;
37 }

最新文章

  1. tomcat服务器奇异事件
  2. 作业八:团队项目——Alpha阶段项目总结
  3. Servlet里面url-pattern的通配符*的使用规则
  4. Apache+php在windows下的安装和配置
  5. .NET基础之:i++和i=i+1和++i的区别
  6. 仿写thinkphp的I方法
  7. C#如何转换2位数字表示的年
  8. Drainage Ditches - poj 1273(网络流模板)
  9. wpf-DataTemplate应用
  10. IOS开发之——使用SBJson拼接Json字符串
  11. Echarts数据可视化grid直角坐标系(xAxis、yAxis),开发全解+完美注释
  12. linux文件系统 - 初始化(二)
  13. 【cs229-Lecture4】GLMS:选定指数分布族,如何用它来推导出GLM?
  14. 使用scrapy框架爬取自己的博文
  15. jquery ui widgets-datepicker
  16. 在Qtlabel中显示数字十六进制和十进制都可以
  17. 企业服务的3种模式:On-Premise、SaaS、Mixed,该选哪种?--创业邦
  18. jquery 常用获取值得方法汇总
  19. Servlet采用多线程来处理多个请求同时访问
  20. 每次都要重新编译?太慢!让跨平台的 MSBuild/dotnet build 的 Target 支持差量编译

热门文章

  1. Web Worker: Shared Worker的使用
  2. websocket、socket、http对比
  3. SpringBoot定时任务 - 集成quartz实现定时任务(单实例和分布式两种方式)
  4. java-Date类与集合(上)
  5. Excel 统计函数(四):AVERAGEIF 和 AVERAGEIFS
  6. Selenium 4 有哪些不一样?
  7. hotspot算法实现 &lt;&lt;深入理解Java虚拟机&gt;&gt;
  8. 【HTML】学习路径4-align对齐-标签属性
  9. 【JDBC】学习路径1-JDBC背景知识
  10. kubeadm部署k8s v1.19.4版本集群