题意:
求两数字串的最长公共子序列(LCS)。

思路:
LCS的时间复杂度为O(nn),因为数据量大,所以会超时。
又因为数字串互不相同,所以可以LCS转LIS(最长上升子序列),LIS有时间复杂度O(n
log(n))的解法。–二分法

先对第一个数字串进行处理,用map记录下每个值所对应的下标(位置),再处理第二个数字串,将其中在第一个数字串中出现的数字构建一个数组,新数组的值记录的是该数字在第一个数字串里的位置。
最后通过最长上升子序列(LIS)求得答案。
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <algorithm>
#include <map>
#define inf 0x7fffffffusing namespace std;
int n,p,q,a[90000],dp[90000];
int main()
{ios::sync_with_stdio(false);int T,x;scanf("%d",&T);for(int k=1;k<=T;k++){map<int,int> m;memset(dp,0,sizeof(dp));int num=0;scanf("%d%d%d",&n,&p,&q);for(int i=0;i<=p;i++){scanf("%d",&x);m[x]=i+1;}for(int i=0;i<=q;i++){scanf("%d",&x);if(m[x]){a[num++]=m[x];}}dp[0]=a[0];int len=1;for(int i=1;i<num;i++){if(dp[len-1]<a[i]){dp[len++]=a[i];}else{int id=lower_bound(dp,dp+len,a[i])-dp;dp[id]=a[i];}}printf("Case %d: %d\n",k,len);}return 0;
}

UVA 10635 Prince and Princess相关推荐

  1. UVA 10635——Prince and Princess

    题意:给定两个长度为p+1和q+1的序列,求两个序列的LCS. 思路:如果直接使用朴素的LCS算法则O(pq)会超时,可以把A中出现的元素编码,然后映射到B(只保留AB都存在的元素),这样就转化为求B ...

  2. uva 10635 Prince and Princess(LCS成问题LIS问题O(nlogn))

    标题效果:有两个长度p+1和q+1该序列.的各种元素的每个序列不是相互同.并1~n^2之间的整数.个序列的第一个元素均为1. 求出A和B的最长公共子序列长度. 分析:本题是LCS问题,可是p*q< ...

  3. [UVA 10635] Prince ans Princess

    图片加载可能有点慢,请跳过题面先看题解,谢谢 这道题... 还是要点思维的... 第一眼看是个最长公共子序列,但是, \(N\le 62500\) ,并不能 \(O(n^2)\) 求 $ $ 这道题有 ...

  4. UVA 10635 王子和公主

    UVA 10635 [题目描述]:王子和公主 一个王子和公主在n*n的格子中行走,这些格子是有1....n^2的编号的.现在给定p+1个数,再给定q+1个数,公主和王子可以选择其中某些格子行走,求他们 ...

  5. HDU 4685 Prince and Princess(二分匹配加点建图+强连通分量)

    题目链接 Problem Description There are n princes and m princesses. Princess can marry any prince. But pr ...

  6. H - Prince and Princess 计蒜客 - 42402

    H - Prince and Princess 计蒜客 - 42402 题意: 你现在要寻找公主,有三种人,第一种是说真话的人(至少为1,因为公主是说真话的人),第二种人是只会说假话的,第三种是胡说八 ...

  7. HDU4685:Prince and Princess(二分图匹配+tarjan)

    Prince and Princess Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Othe ...

  8. uva10635 Prince and Princess LCS 变 lIS

    // uva10635 Prince and Princess LCS 变 lIS // 本意求LCS,但是规模有60000多,复杂度肯定不够 // 注意如果俩个序列的值的范围相同,那么可以在一个 / ...

  9. Prince and Princess问题解决

    摘要 这是突然看到的一个非常有意思的题,是ACM-ICPC的原题,在这里稍微做一些分析,希望对大家有帮助. Prince and Princess 题面 王子m和公主Hff相爱,想要娶公主.虽然公主非 ...

最新文章

  1. 面向对象程序设计(OOP)的六大原则
  2. ipython 模块搜索路径
  3. 建造者模式Builder
  4. wingdings字体符号在哪_出版社编辑对标点符号和专业术语的要求
  5. java玫瑰花代码_程序员最美的情人节玫瑰花,JAVA代码实现的3D玫瑰噢
  6. JAVA ME游戏----个人移植:9688雷霆战机
  7. java生成word 框勾_Java根据word模板生成word文档之设计详细思路—word标签定义 | 学步园...
  8. 远程服务器下载百度网盘中的内容
  9. quicktime安装不了
  10. PDF文件有密码怎么取消加密
  11. 潮汕明代皇封御葬古墓受损追踪:当地相关部门介入
  12. 计算机中int函数什么意思,excel中int是什么意思
  13. MySQL之——Linux单机启动多个MySQL实例(mysqld_multi )
  14. 虚拟人,数字人,虚拟数字人的定义区别
  15. UDDI和WSDL的关系
  16. 如何反编译apk文件并解析.class文件查看Java源代码
  17. 第九届“图灵杯”NEUQ-ACM程序设计竞赛个人赛前十题(能力有限)
  18. 读书《Python数据挖掘课程》
  19. ICSE NIER 2017 论文阅读 - Production-Driven Patch Generation
  20. 开源框架到CocoaPods

热门文章

  1. Python入门三:安装Pyqt5
  2. ubuntu/linux命令记录 长期更新
  3. window10如何开启telnet
  4. 两个服务器组虚拟机,linux 两台虚拟机
  5. 2022“杭电杯”中国大学生算法设计超级联赛(8)补题 1011 (持续更新中)
  6. RPO 相对路径覆盖攻击
  7. 【Week2 作业】A - Maze、B - Pour Water
  8. Arduino利用红外感应控制舵机
  9. unity新特性_新的Unity论坛
  10. 计算机按键音乐文爱,CG/贺敬轩《文爱》[FLAC/MP3-320K]