题目链接:

http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=19051

题意:

有两个长度分别为p+1和q+1的由1到n2之前的整数组成的序列,每个序列的元素各不相等,两个序列第一个元素均为1。求两个序列的最长公共子序列。

分析:

LCS的复杂度为O(p∗q),这题p,q最大为250 * 250,必T无疑。

注意题目说的每个序列的元素各不相等,那么就能保证我们可以把序列A的元素用1到p+1重新进行赋值,把B中元素根据A的赋值找到对应的标号,用0表示没有出现过,那么问题就可以转化为LIS啦,时间复杂度O(nlogn),可以过了。

有关LIS的内容这里有一个http://blog.csdn.net/yukizzz/article/details/50620631

代码:

/*************************************************************************
> File Name: 10635.cpp
> Author: jiangyuzhu
> Mail: 834138558@qq.com
> Created Time: Sat 18 Jun 2016 08:57:43 PM CST
************************************************************************/ #include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
#include<stack>
using namespace std;
#define sa(n) scanf("%d", &(n));
typedef pair<int, int>p;
const int maxn = 250 + 5, mod = 1e9 + 7, oo = 0x3f3f3f3f;
int a[maxn * maxn], b[maxn * maxn], nb[maxn * maxn];
int pos[maxn * maxn];
int dp[maxn * maxn];
int main (void)
{
int t;sa(t);
for(int kas = 1; kas <= t; kas++){
int n, p, q;sa(n);sa(p);sa(q);
memset(pos, 0, sizeof(pos));
for(int i = 0; i <= p; i++){
sa(a[i]);
pos[a[i]] = i;
}
memset(nb, 0, sizeof(nb));
for(int i = 0; i <= q; i++){
sa(b[i]);
nb[i] = pos[b[i]];
}
memset(dp, 0x3f, sizeof(dp));
for(int i = 0; i <= q; i++){
*lower_bound(dp, dp + q + 1, nb[i]) = nb[i];
}
int ans = lower_bound(dp, dp + q + 1, oo) - dp;
printf("Case %d: %d\n", kas, ans);
}
return 0;
}

最新文章

  1. java对xml节点属性的增删改查
  2. select case巧用 oracle
  3. react路由深度解析
  4. 深入理解 KVC\KVO 实现机制 — KVO
  5. Knockout.Js官网学习(简介)
  6. Servlet的学习之Cookie
  7. Hibernate一级缓存和二级缓存深度比较
  8. 多线程编程、java图形用户界面编程、Java I / O系统
  9. python练习题_03
  10. 第一篇:安装Android Studio问题及其解决方案
  11. 前端 -----函数和伪数组(arguments)
  12. 让 div中的div垂直居中的方法!!同样是抄袭来的(*^__^*)
  13. 2019.02.09 bzoj2839: 集合计数(容斥原理)
  14. Xcode 8 的 Debug 新特性 —- WWDC 2016 Session 410 &amp; 412 学习笔记
  15. 如何在mysql中查询每个分组的前几名
  16. [DAViCHi/SeeYa/T-ARA][원더우먼][Wonder Woman]
  17. 七牛云 上传图片 https 修改Nginx 注意事项
  18. 20155311 实验三 敏捷开发与XP实践 实验报告
  19. 三、postman测试断言设置语法
  20. windows下python安装Numpy和Scipy模块

热门文章

  1. 【php】【趣味代码】对象引用的比较
  2. python-函数基础、函数参数
  3. JAVA基础篇—Servlet小结
  4. LeetCode(117) Populating Next Right Pointers in Each Node II
  5. nova虚拟机镜像从创建到文件系统resize完整流程
  6. Linux学习-什么是登录档
  7. linux学习-CentOS 7 环境下大量建置账号的方法
  8. LA 7049 Galaxy 枚举
  9. 关于mysql中select出数据未排序问题
  10. python - work3