博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA - 10635 Prince and Princess
阅读量:7289 次
发布时间:2019-06-30

本文共 967 字,大约阅读时间需要 3 分钟。

 

题解:

  这个题目还是比较难想的,首先我们要注意到题目一个比较明显的性质,即没有重复的元素。

  那么我们就可以对于每个元素按照升序编号,然后根据每个元素的编号,把第二个串的元素对应上去,(注意:如果两个串所不共有的元素可以直接删除,因为一定不在答案里)那么两个串的最长公共子序列就是第二个串的最长上升子序列了。

 

代码:

#include 
#include
#include
#include
#include
#include
#define MAXN 100000using namespace std;int s1[MAXN],s2[MAXN],key[MAXN],a[MAXN],dp[MAXN];int n,len1,len2,num,CASE;void work(){ scanf("%d%d%d",&n,&len1,&len2); len1++,len2++; for(int i=1;i<=len1;i++) scanf("%d",&s1[i]); for(int i=1;i<=len2;i++) scanf("%d",&s2[i]); memset(key,0,sizeof(key));num=0; for(int i=1;i<=len1;i++) key[s1[i]]=++num; memset(a,0,sizeof(a));num=0; for(int i=1;i<=len2;i++){ if(!key[s2[i]]) continue; a[++num]=key[s2[i]]; } memset(dp,127,sizeof(dp));int maxx=0; dp[0]=0; for(int i=1;i<=num;i++){ int l=0,r=maxx,mid,ans; while(l<=r){ mid=(l+r)/2; if(dp[mid]

 

转载于:https://www.cnblogs.com/renjianshige/p/7652433.html

你可能感兴趣的文章
创业公司如何实施敏捷开发
查看>>
Django使用AJAX调用自己写的API接口
查看>>
数据科学求职准备
查看>>
Wireshark抓包工具使用教程以及常用抓包规则
查看>>
fedora16下更改网卡名字
查看>>
awk中NF,NR的含义
查看>>
Centos下Docker中运行neo4j 并配置挂载本地文件
查看>>
静态页面跳转传值小插件
查看>>
JetBrains公司的IDE使用技巧
查看>>
第三届中国云计算用户大会笔记和心得
查看>>
PHP7开启opcache打造强悍性能
查看>>
加载某个页面(A)时实现自动跳转到某个页面(B)
查看>>
Jenkins入门系列之——03PDF文档下载
查看>>
Digit Generator(生成元)
查看>>
php 入门笔记
查看>>
Python3.7安装PyQt5的方法
查看>>
Zoj 3781(构造)
查看>>
One error related to msxml4.dll (0x800C0014)
查看>>
“爆打”团队阿尔法发布 以及 第四周任务
查看>>
【堆】bzoj1293 [SCOI2009]生日礼物
查看>>