1756 简单的LCS
来源:互联网 发布:物理电子实验室软件 编辑:程序博客网 时间:2024/06/05 06:26
题目确实很简单,给两个序列,求其LCS
对于每个序列,每个元素均为[1,50000]之间的整数,且数字不会重复出现
- 输入
- 对每组数据P(1<=P<=10000),Q(1<=Q<=10000)接着两行,第一行为P个数字第二行为Q个数字若遇P=Q=0表示文件尾,此行不处理
- 输出
- 两个序列的LCS
- 样例输入
1 233 43 41 2 31 2 3 40 0
- 样例输出
13
- 提示
- 转换为最长上升子列用数组b[i]记录长度为i的所有最长上升子列中最后一位的最小值即可,二分
#include <iostream>using namespace std;int dp[10001], a[10001], b[10001];int seek(int a[], int x, int len){int left = 0; int right = len - 1;int mid;while(left <= right){mid = (left + right) / 2;if(x < a[mid])right = mid - 1;elseleft = mid + 1;}return left;}int main(){int p, q, i, x;while(1){cin >> p >> q;if(p == 0 && q == 0)break;for(i = 1; i <= 10000; i ++)a[i] = 0;for(i = 1; i <= p; i ++){cin >> x;a[x] = i;}int num = 0;for(i = 1; i <= q; i ++){cin >> x;if(a[x] != 0)b[++ num] = a[x];}dp[0] = b[1];int len = 1;for(i = 2; i <= num; i ++){x = b[i];int pos = seek(dp, x, len);dp[pos] = x;if(pos > len - 1) len ++;}cout << len << '\n';}return 0;}
- 1756 简单的LCS
- LCS简单问题
- hdu1513(LCS简单应用)
- POJ 1458 (简单LCS)
- 【codevs 1862】LCS问题+LCS的计数
- LCS 算法的改进
- LCS客户端的配置
- 关于LCS的构造
- LCS 问题的解决办法
- 三个字符串的LCS
- hdu1080 带权值的LCS
- JZOJ4721 NlogN的LCS
- csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)
- 1045. Favorite Color Stripe (30) 简单动态规划(LCS的变形)
- LCS
- LCS
- lcs
- LCS
- Linux中ramdisk,tmpfs,ramfs的介绍与...
- bit 位域大小端转换问题
- AppHero:根据Facebook记录推荐你喜欢的应用
- SyncToy使用介绍
- java获取服务器一些信息的方法
- 1756 简单的LCS
- 技术转载:Java远程通信的那些事儿
- 快速排序
- Android TwoLineListItem
- 2_ POP / IMAP 服务器的构建( Dovecot )
- 绑定变量窥探
- 1763 棋子
- objc--对于Retain和Assign属性的理解
- 对标准的落实缺乏严厉的执行