uva10635 王子和公主(把lcs转化为lis)
来源:互联网 发布:android多屏互动源码 编辑:程序博客网 时间:2024/04/29 14:17
有两个长度为p+1和q+1的序列,每个序列中的各个元素互不相同,且都是1~n*n之间的整数,两个序列的第一个元素都是1,求a和b的最长公共子序列的长度。
思路很容易想到lcs,但是由于O(pq)的算法肯定会超时,所以不能采用,注意到a和b中的元素互不相同,故可以预处理a中的元素,用trans数组记录a每个元素值对应的位置,然后处理b中的元素,把每个元素转化成该元素在a中的位置,如果没在a中出现那么为零,这样就把lcs问题转化成了lis
#include<cstdio> #include<cstring> #include<cmath> #include<cstdlib> #include<iostream> #include<algorithm> #include<vector> #include<map> #include<queue> #include<stack> #include<string>#include<map> #include<set>#define eps 1e-6 #define LL long long using namespace std; const int maxn = 250 * 250 + 50;const int INF = 0x3f3f3f3f;int n, p, q;int B[maxn], trans[maxn], g[maxn], d[maxn];int kase = 0;void init() {scanf("%d%d%d", &n, &p, &q);memset(trans, 0, sizeof(trans));for(int i = 1; i <= p+1; i++) {int tmp; scanf("%d", &tmp);trans[tmp] = i;}for(int i = 0; i <= q; i++) {int tmp; scanf("%d", &tmp);B[i] = trans[tmp];}}void solve() {int ans = -INF;for(int i = 1; i <= q+1; i++) g[i] = INF;for(int i = 0; i <= q; i++) {int k = lower_bound(g+1, g+q+2, B[i]) - g;d[i] = k;g[k] = B[i];} for(int i = 0; i <= q; i++) ans = max(ans, d[i]);printf("Case %d: %d\n", ++kase, ans);}int main() {freopen("input.txt", "r", stdin);int t; scanf("%d", &t);while(t--) {init();solve();}return 0;}
1 0
- uva10635 王子和公主(把lcs转化为lis)
- 王子和公主 (uva10635)
- Uva 10635 王子和公主(LCS转LIS+二分)
- LCS,LIS(王子和公主,uva 10635)
- 例题1.27 王子和公主 UVa10635
- UVa 10635(lcs转lis优化模板)王子和公主
- uva10635(LCS转换为求LIS)
- [LCS][LIS]Uva10635]
- uva10635(lcs lis O(NlgN))
- UVa10635 Prince and Princess ACM解题报告(LCS与LIS的转化+单调栈+二分查找代替DP)
- UVa10635--Prince and Princess(LCS转LIS)
- uva10635 Prince and Princess(LCS转LIS)
- UVA - 10635 - Prince and Princess (LCS转化为LIS)
- UVA-10635 LCS转化为LIS
- uva10635 Prince and Princess LCS 变 lIS
- 【动态规划14】UVA10635 Prince and princess(LCS转LIS)
- uva 10635 Prince and Princess (将LCS 转化为 LIS)
- UVA 10635 - Prince and Princess LCS转化为LIS
- 【JS】全选、不选、反选复选框(模板)
- HDu 1001 Sum Problem
- Apache Rewrite重写模块(一):一个入门的例子
- 菜单栏显示效果
- 2015061908 - 人来人往
- uva10635 王子和公主(把lcs转化为lis)
- sgu 213
- RESTful Error Handling with Spring
- 欢迎使用CSDN-markdown编辑器
- 数据库学习之--Oracle 架构与MySQL架构对比
- 30 Java Programming Tips and Best Practices for Beginners
- 2015061909 - 将List中数据随机变化位置
- Lua相关的扩展库
- javase 1506-19