题目传送

题意:

求a序列和b序列的最长公共序列(LCS)。

思路:

显然不能用二维数组的方法来做,那样会超时。因为a和b的里面的元素不相同,我们可以用位置来表示a序列,里面的值是【1,2,3…,p+1】,而新的b序列表示的是旧b里面的元素在a序列里面的位置,放入新b中,保证新b序列里面的元素位置是a和b的公共位置。因为a里面的位置是上升的,所以只要在新b中找LIS,就是a和b的LCS。

代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=2e5+10,INF=1e9+10;
int num[N],d[N],g[N],s[N],t,n,p,q;
int main()
{scanf("%d",&t);for(int kase=1;kase<=t;kase++){scanf("%d%d%d",&n,&p,&q);memset(num,0,sizeof num);//memset(d,0,sizeof d);memset(s,0,sizeof s);int cnt=0,ans=0,x;for(int i=1;i<=p+1;i++){scanf("%d",&x);num[x]=i;//每个元素赋值位置。}for(int i=1;i<=q+1;i++){scanf("%d",&x);if(num[x])s[cnt++]=num[x];//如果x在a中出现,则将在a中的位置放进去}//对num[0,1,....cnt-1]进行LISfor(int i=1;i<=cnt;i++)g[i]=INF;for(int i=0;i<cnt;i++){int k=lower_bound(g+1,g+1+cnt,s[i])-g;//d[i]=k;g[k]=s[i];ans=max(ans,k);}printf("Case %d: %d\n",kase,ans);}return 0;}

UVA10635--Prince and Princess相关推荐

  1. uva10635 Prince and Princess LCS 变 lIS

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

  2. uva10635 Prince and Princess

    给你两条路径,对于每条路径上的点各不相同,请你求出两条路径最长公共部分的长度. Input 第一行是数据组数t 每组数据的第一行包含三个数,n,p,q.其中路径上的点的大小不会超过n^2. 第二行包含 ...

  3. UVa10635 - Prince and Princess

    /*基础:LCS*/ #include<bits/stdc++.h> using namespace std; int a[100]; int b[100]; int dp[100][10 ...

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

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

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

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

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

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

  7. Prince and Princess问题解决

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

  8. HDU - 4685 Prince and Princess(强连通缩点+二分图完备匹配)

    题目链接:点击查看 题目大意:给出n个王子和m个公主,每个王子都有喜欢的公主,题目需要我们在尽可能多的王子可以匹配到喜欢的公主的情况下,求出每个王子所能娶的所有公主,必须保证王子娶了其中任何一个之后, ...

  9. UVA 10635——Prince and Princess

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

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

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

最新文章

  1. 【c语言】求最大最小值
  2. 修改新版am335x支持1G主频的方法[来自A Xian调试记录]
  3. linux c 获取指定进程 父进程pid
  4. php 导出csv字符串,PHP CSV字符串到数组
  5. 介绍一下Objective-c常用的函数,常数变量
  6. 计算python执行时间
  7. sklearn之XGBModel:XGBModel之feature_importances_、plot_importance的简介、使用方法之详细攻略
  8. 零知识证明应用到区块链中的技术挑战
  9. Mybatis框架插件PageHelper的使用
  10. Linux高级管理之ACL(访问控制列表)实战应用
  11. vscode如何关闭Pylint警告或错误提示
  12. ELK快速搭建一个集中化日志平台
  13. IDEA创建maven聚合项目多模块项目并在Tomcat启动图解详细教程
  14. python queue join,python3多线程通信方式,主要理解队列的join()和task_done()方法
  15. java程序设计基础_陈国君版第五版_第十章习题
  16. 掌握TikTok商业化玩法,3大支点撬动亿万级流量市场
  17. タイトル キャッスルファンタジア ~エレンシア戦記~リニューアル 艾伦西亚战记(艾伦希亚战记)日文攻略
  18. [NOIP2011] 观光公交解题报告
  19. 如何获取dgv中所显示的全部数据
  20. 服务器网卡组(team)技术原理与实践

热门文章

  1. python:Base16, Base32, Base64, Base85 数据编码
  2. 数据库课程设计【5】-----答辩总结
  3. excel工作表保护
  4. MATLAB求解二元(多元)函数极值
  5. win10系统打开更新服务器失败怎么回事,如何修复Windows Update组件以解决Win10无法自动更新的问题?...
  6. 【java之汉字转拼音】
  7. 使用python批量提取txt中的数据并写入excel
  8. c++编程拼图小游戏
  9. Android4.4监听耳机插入处理方法
  10. ARM工控主板LS1012A