Prince and Princess UVA - 10635
找出两个序列的最长公共子序列
因为每个序列中每个数只出现一次
所以可以先记录每个数字在第一个序列中出现的位置
再把第二个序列的数字换成这个数字在第一个序列中出现的位置
这样求一个最长上升子序列就是答案
#include <iostream>
#include <algorithm>
#include <sstream>
#include <string>
#include <queue>
#include <cstdio>
#include <map>
#include <set>
#include <utility>
#include <stack>
#include <cstring>
#include <cmath>
#include <vector>
#include <ctime>
#include <bitset>
using namespace std;
#define pb push_back
#define sd(n) scanf("%d",&n)
#define sdd(n,m) scanf("%d%d",&n,&m)
#define sddd(n,m,k) scanf("%d%d%d",&n,&m,&k)
#define sld(n) scanf("%lld",&n)
#define sldd(n,m) scanf("%lld%lld",&n,&m)
#define slddd(n,m,k) scanf("%lld%lld%lld",&n,&m,&k)
#define sf(n) scanf("%lf",&n)
#define sff(n,m) scanf("%lf%lf",&n,&m)
#define sfff(n,m,k) scanf("%lf%lf%lf",&n,&m,&k)
#define ss(str) scanf("%s",str)
#define ansn() printf("%d\n",ans)
#define lansn() printf("%lld\n",ans)
#define r0(i,n) for(int i=0;i<(n);++i)
#define r1(i,e) for(int i=1;i<=e;++i)
#define rn(i,e) for(int i=e;i>=1;--i)
#define mst(abc,bca) memset(abc,bca,sizeof abc)
#define lowbit(a) (a&(-a))
#define all(a) a.begin(),a.end()
#define pii pair<int,int>
#define pll pair<long long,long long>
#define mp(aa,bb) make_pair(aa,bb)
#define lrt rt<<1
#define rrt rt<<1|1
#define X first
#define Y second
#define PI (acos(-1.0))
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
//const ll mod = 1000000007 ;
const double eps=1e-9;
const int inf=0x3f3f3f3f;
//const ll infl = 100000000000000000;//1e17
const int maxn= 1e5+20;
const int maxm = 1e5+20;
//muv[i]=(p-(p/i))*muv[p%i]%p;
int in(int &ret) {char c;int sgn ;if(c=getchar(),c==EOF)return -1;while(c!='-'&&(c<'0'||c>'9'))c=getchar();sgn = (c=='-')?-1:1;ret = (c=='-')?0:(c-'0');while(c=getchar(),c>='0'&&c<='9')ret = ret*10+(c-'0');ret *=sgn;return 1;
}int a[maxn];
int b[maxn];
int c[maxn];
int main() {
#ifdef LOCALfreopen("input.txt","r",stdin);freopen("output.txt","w",stdout);
#endif // LOCALint t;sd(t);r1(cas,t) {printf("Case %d: ",cas);int n,p,q;sddd(n,p,q);int sz = n*n;for(int i=1; i<=sz; ++i)a[i] = inf;for(int i=1; i<=p+1; ++i) {int x;sd(x);a[x] = i;}for(int i=1; i<=q+1; ++i) {int x;sd(x);b[i] = a[x];}int len = 1;c[1] = b[1];
// for(int i=1; i<=q+1; i++)printf("%d%c",b[i]," \n"[i==q+1]);for(int i=2; i<=q+1; ++i) {if(b[i]==inf)continue;if(b[i]>c[len])c[++len] = b[i];else {int l = 1 , r = len;int pos = 0;while(l<=r) {int mid = (l+r)>>1;if(b[i]<c[mid])r = mid - 1, pos = mid;else l = mid + 1;}c[pos] = b[i];}}
// for(int i=1; i<=len; i++)printf("%d%c",c[i]," \n"[i==len]);int ans = len;ansn();}return 0;
}
Prince and Princess UVA - 10635相关推荐
- UVA 10635 王子和公主
UVA 10635 [题目描述]:王子和公主 一个王子和公主在n*n的格子中行走,这些格子是有1....n^2的编号的.现在给定p+1个数,再给定q+1个数,公主和王子可以选择其中某些格子行走,求他们 ...
- HDU 4685 Prince and Princess(二分匹配加点建图+强连通分量)
题目链接 Problem Description There are n princes and m princesses. Princess can marry any prince. But pr ...
- H - Prince and Princess 计蒜客 - 42402
H - Prince and Princess 计蒜客 - 42402 题意: 你现在要寻找公主,有三种人,第一种是说真话的人(至少为1,因为公主是说真话的人),第二种人是只会说假话的,第三种是胡说八 ...
- HDU4685:Prince and Princess(二分图匹配+tarjan)
Prince and Princess Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Othe ...
- uva10635 Prince and Princess LCS 变 lIS
// uva10635 Prince and Princess LCS 变 lIS // 本意求LCS,但是规模有60000多,复杂度肯定不够 // 注意如果俩个序列的值的范围相同,那么可以在一个 / ...
- Prince and Princess问题解决
摘要 这是突然看到的一个非常有意思的题,是ACM-ICPC的原题,在这里稍微做一些分析,希望对大家有帮助. Prince and Princess 题面 王子m和公主Hff相爱,想要娶公主.虽然公主非 ...
- UVA 10635——Prince and Princess
题意:给定两个长度为p+1和q+1的序列,求两个序列的LCS. 思路:如果直接使用朴素的LCS算法则O(pq)会超时,可以把A中出现的元素编码,然后映射到B(只保留AB都存在的元素),这样就转化为求B ...
- uva 10635 Prince and Princess(LCS成问题LIS问题O(nlogn))
标题效果:有两个长度p+1和q+1该序列.的各种元素的每个序列不是相互同.并1~n^2之间的整数.个序列的第一个元素均为1. 求出A和B的最长公共子序列长度. 分析:本题是LCS问题,可是p*q< ...
- UVa 10635 (LIS+二分) Prince and Princess
题目的本意是求LCS,但由于每个序列的元素各不相同,所以将A序列重新编号{1,2,,,p+1},将B序列重新编号,分别为B中的元素在A中对应出现的位置(没有的话就是0). 在样例中就是A = {1 7 ...
最新文章
- Cpp / 拷贝构造函数的参数为什么必须使用引用类型
- 最优化方法:梯度下降法、SGD
- 今年的假期挺长的~~~
- android 揭示动画_如何使用意图揭示函数名称使代码更好
- no typehandler found for property XXXX 解决
- NULL和空字符的区别
- 30 岁成 AI 顶尖科学家,这位阿里副总裁厉害了
- 冬小麦病虫害的高光谱识别方法研究
- AcWing 2019. 拖拉机(双端BFS)
- Java static变量
- 网络舆情监测系统学习笔记——GIT的…
- RootKit检测工具
- 3D游戏编程4--打飞碟
- matlab fprintf和disp,matlab中 fprintf 和disp的用法
- 【lphtw】第三弹笔记ex24-ex35
- python一张纸折叠到珠峰高度_一张普通纸折叠27次后会是什么样?专家:厚度超过珠穆朗玛峰...
- 【大脑】----如何增加大脑记忆?
- 想再考一个教师资格证,相同的科目需要重考笔试吗?
- 如何检查MacBook 电池的循环使用次数及健康度?电池续航的方法
- pan图像全色图像_HTML5图像效果–棕褐色