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

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

图片加载可能有点慢,请跳过题面先看题解,谢谢

1196604-20171012104853199-1251831595.png

1196604-20171012104858543-799601029.png

1196604-20171012104903543-1578483727.png

1196604-20171012104907262-361976826.png

这道题。。。

还是要点思维的。。。
第一眼看是个最长公共子序列,但是, \(N\le 62500\) ,并不能 \(O(n^2)\)
$
$
这道题有个很好的性质,每个序列中的元素互不相同
也就是说,在一个序列中,每一个数字都有一个唯一的位置
这有什么用?
$
$
我们进行这样一个操作,把 \(b\) 序列中的数字换成该数字在 \(a\) 序列中出现的位置,那么问题就变成了一个求 \(b\) 序列的 \(LCS\) 的问题了
这样我们就可以在 \(O(nlogn)\) 的复杂度下解决这个问题

再吐槽一下。。。

做这道题目,思考 \(10min\) ,代码调试 \(2h\) ,震惊,原因竟是?
看下这个语句:
我写的: \(a[++k]=max(a[k],x)\)
AC程序: \(a[k+1]=max(a[k+1],x)\),或者 \(a[k]=max(a[++k],x)\)

//made by Hero_of_Someone#include
#include
#include
#include
#define il inline#define RG registerusing namespace std;il int gi(){ RG int x=0,q=1; RG char ch=getchar(); while( ( ch<'0' || ch>'9' ) && ch!='-' ) ch=getchar(); if( ch=='-' ) q=-1,ch=getchar(); while(ch>='0' && ch<='9') x=x*10+ch-48,ch=getchar(); return q*x; }int T,t,N,n,m,cnt;int a[100010],b[100010],id[100010];il void init(){ N=gi(),n=gi()+1,m=gi()+1; memset(id,0,sizeof(id)); cnt=0; for(RG int i=1;i<=n;i++) a[i]=gi(),id[a[i]]=i; for(RG int i=1;i<=m;i++){ b[i]=gi(); if(id[b[i]]) b[++cnt]=id[b[i]]; }}il void work(){ n=cnt,cnt=0; memset(a,0x3f3f3f3f,sizeof(a)); for(RG int i=1;i<=n;i++){ RG int x=b[i]; RG int l=1,r=cnt,k=0; while(l<=r){ RG int mid=(l+r)>>1; if(a[mid]>x) r=mid-1; else l=mid+1,k=mid; } if(k==cnt) a[++cnt]=x; else a[k]=min(a[++k],x); } printf("Case %d: %d\n",t,cnt);}int main(){ T=gi(); for(t=1;t<=T;t++){ init(); work(); } return 0; }

转载于:https://www.cnblogs.com/Hero-of-someone/p/7654585.html

你可能感兴趣的文章
react入门
查看>>
思科设备VLAN之间通信配置
查看>>
mysql排错 (一)
查看>>
给一系列的div中的第一个添加class
查看>>
C# 中out,ref,params参数的使用
查看>>
Java统计文件夹中文件总行数
查看>>
python之基本数据类型及深浅拷贝
查看>>
将bootstrap弹出框的点击弹出改为鼠标移入弹出
查看>>
SKF密码设备研究
查看>>
数据对象映射模式(通过工厂模式和注册树模式)v2
查看>>
4939 欧拉函数[一中数论随堂练]
查看>>
MySQL笔记(一)
查看>>
spring boot 包jar运行
查看>>
18年秋季学习总结
查看>>
Effective前端1:能使用html/css解决的问题就不要使用JS
查看>>
网络攻防 实验一
查看>>
由莫名其妙的错误开始---浅谈jquery的dom节点创建
查看>>
磨刀-CodeWarrior11生成的Makefile解析
查看>>
String StringBuffer StringBuilder对比
查看>>
bootstrap随笔点击增加
查看>>