传送门:LCS

题意:给出两个序列an和bn,想在给出一个序列pn,问经过a[p1],,,,a[pn]和b[p1],,,b[pn]变换后序列a和序列b的最长公共子序列的长度是多少。

思路:对a[i]->b[i]建边,最终总能形成一个环,对于这个长度为L的环,我们总能找到一个长度为L-1的LCS。所以,我们只要用序列的长度减去长度大于1的环的个数就是最终的结果。

例如:

   

代码:

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5+;
typedef long long ll;
int a[maxn],b[maxn],c[maxn];
int vis[maxn]; inline void init()
{
memset(vis,,sizeof(vis));
return;
} int main()
{
int T;
scanf("%d",&T);
while(T--)
{
init();
int n;
scanf("%d",&n);
for(int i = ; i<=n; i++)
scanf("%d",&a[i]);
for(int i = ; i<=n; i++)
{
scanf("%d",&b[i]);
c[a[i]] = b[i];
}
int ans = n;
for(int i = ; i<=n; i++)
{
int t = i;
if(c[t] != t && !vis[t])
{
ans--;
while(!vis[t])
{
vis[t] = ;
t = c[t];
}
}
}
printf("%d\n",ans);
}
return ;
}
/*
样例输入:
2
3
1 2 3
3 2 1
6
1 5 3 2 6 4
3 6 2 4 5 1
样例输出:
2
4
*/

最新文章

  1. ios – 使用UINib加载xib文件实现UITableViewCell
  2. Vcenter server 5.5添加用户角色及分配权限
  3. sublime: useful commands
  4. servlet&amp;jsp高级:第三部分
  5. Android系统移植与驱动开发--第三章 Git使用入门及在学习中有感
  6. [工具]sublime text2-前端开发利器
  7. php学习之道:WSDL具体解释(三)
  8. spring3.1........jar包下载
  9. 测试开发Python培训:抓取新浪微博评论提取目标数据-技术篇
  10. html5 浏览文件
  11. react插件包
  12. oracle-taf
  13. linux zip tar 压缩打包命令
  14. MySQL--时间戳属性2
  15. js sort
  16. C# 文件存在,但是File.Exists 判断不存在的问题
  17. Matlab绘图控制命令
  18. ios app 实现热更新(无需发新版本号实现app加入新功能)
  19. 【leetcode 简单】第十八题 爬楼梯
  20. div的隐藏占用空间位置关系

热门文章

  1. C++ 代码片段(积累)
  2. HDU 5752Sqrt Bo
  3. Java 泛型 五:泛型与数组
  4. CentOS下网卡启动、配置等ifcfg-eth0教程
  5. Commons-FileUpload 常用API
  6. PCB 机器学习(ML.NET)初体验实现PCB加投率预测
  7. cookie使用详解
  8. 2019 第三届强网杯线上赛部分web复现
  9. 递推DP HDOJ 5375 Gray code
  10. Linux环境下卸载、安装及配置MySQL5.1