UVA 10635 Prince and Princess
题意:
求两数字串的最长公共子序列(LCS)。
思路:
LCS的时间复杂度为O(nn),因为数据量大,所以会超时。
又因为数字串互不相同,所以可以LCS转LIS(最长上升子序列),LIS有时间复杂度O(nlog(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相关推荐
- 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] Prince ans Princess
图片加载可能有点慢,请跳过题面先看题解,谢谢 这道题... 还是要点思维的... 第一眼看是个最长公共子序列,但是, \(N\le 62500\) ,并不能 \(O(n^2)\) 求 $ $ 这道题有 ...
- 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相爱,想要娶公主.虽然公主非 ...
最新文章
- 面向对象程序设计(OOP)的六大原则
- ipython 模块搜索路径
- 建造者模式Builder
- wingdings字体符号在哪_出版社编辑对标点符号和专业术语的要求
- java玫瑰花代码_程序员最美的情人节玫瑰花,JAVA代码实现的3D玫瑰噢
- JAVA ME游戏----个人移植:9688雷霆战机
- java生成word 框勾_Java根据word模板生成word文档之设计详细思路—word标签定义 | 学步园...
- 远程服务器下载百度网盘中的内容
- quicktime安装不了
- PDF文件有密码怎么取消加密
- 潮汕明代皇封御葬古墓受损追踪:当地相关部门介入
- 计算机中int函数什么意思,excel中int是什么意思
- MySQL之——Linux单机启动多个MySQL实例(mysqld_multi )
- 虚拟人,数字人,虚拟数字人的定义区别
- UDDI和WSDL的关系
- 如何反编译apk文件并解析.class文件查看Java源代码
- 第九届“图灵杯”NEUQ-ACM程序设计竞赛个人赛前十题(能力有限)
- 读书《Python数据挖掘课程》
- ICSE NIER 2017 论文阅读 - Production-Driven Patch Generation
- 开源框架到CocoaPods
热门文章
- Python入门三:安装Pyqt5
- ubuntu/linux命令记录 长期更新
- window10如何开启telnet
- 两个服务器组虚拟机,linux 两台虚拟机
- 2022“杭电杯”中国大学生算法设计超级联赛(8)补题 1011 (持续更新中)
- RPO 相对路径覆盖攻击
- 【Week2 作业】A - Maze、B - Pour Water
- Arduino利用红外感应控制舵机
- unity新特性_新的Unity论坛
- 计算机按键音乐文爱,CG/贺敬轩《文爱》[FLAC/MP3-320K]