Uva 10635 Prince and Princess (LCS变形LIS)
2015-09-29 17:40
302 查看
直接LCS是时间复杂度是O(p*q)的,但是序列元素各不相同,只要把其中一个序列映射成有序的,
另外一个序列再做相同的映射,没有的直接删掉,就变成了求另一个序列LIS。
另外一个序列再做相同的映射,没有的直接删掉,就变成了求另一个序列LIS。
#include<bits/stdc++.h> using namespace std; int read() { char c; while(c=getchar(),c<'0'||c>'9'); int re = c-'0'; while(c=getchar(),c>='0'&&c<='9') re = re*10+c-'0'; return re; } const int maxn = 250*250; int mp[maxn]; int S[maxn],g[maxn]; //#define LOCAL int main() { #ifdef LOCAL freopen("in.txt","r",stdin); #endif int T; scanf("%d",&T); for(int ks = 1; ks <= T; ks++){ int n, p, q; scanf("%d%d%d",&n,&p,&q); memset(mp,-1,sizeof(mp)); for(int i = 0; i <= p; i++) { mp[read()] = i; } int c = 0; for(int i = 0; i <= q; i++){ int x = mp[read()]; if(~x){ S[c++] = x; } } memset(g,0x3f,sizeof(int)*(c+1)); int ans = 0; for(int i = 0; i < c; i++){ int k = lower_bound(g+1,g+1+i,S[i])-g; g[k] = S[i]; ans = max(ans,k); } printf("Case %d: %d\n",ks,ans); } return 0; }
相关文章推荐
- ubuntu 安装pure-ftp
- 递归的grep
- 经典算法之动态规划(一):入门级动态规划
- 【Android】Activity切换动画效果
- APK加固之类抽取分析与修复
- NOI2010 海拔
- 分解质因数
- js跳转页面并传值以及localStorage的用法
- Java基础---java虚拟机内存结构
- 归并排序
- java 接口、抽象类、具体类、内部类、匿名内部类的区别及它们之间的关系
- HTTP协议详解(版本二)
- windbg ida需要symbols
- Eclipse+APKTool动态调试APK
- c 开源代码
- poj 2689
- rz和sz 和他们的参数们
- effective c++ 令operator=返回一个reference to *this
- ICV hash校验值不符的问题
- 工厂模式