博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 5495:LCS
阅读量:6914 次
发布时间:2019-06-27

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

LCS

 
 Accepts: 127
 
 Submissions: 397
 Time Limit: 6000/3000 MS (Java/Others)
 
 Memory Limit: 65536/65536 K (Java/Others)
问题描述
你有两个序列\{a_1,a_2,...,a_n\}{
a1,a2,...,an}和\{b_1,b_2,...,b_n\}{
b1,b2,...,bn}. 他们都是11到nn的一个排列. 你需要找到另一个排列\{p_1,p_2,...,p_n\}{
p1,p2,...,pn}, 使得序列\{a_{p_1},a_{p_2},...,a_{p_n}\}{
ap1,ap2,...,apn}和\{b_{p_1},b_{p_2},...,b_{p_n}\}{
bp1,bp2,...,bpn}的最长公共子序列的长度最大.
输入描述
输入有多组数据, 第一行有一个整数TT表示测试数据的组数. 对于每组数据:第一行包含一个整数n (1 \le n \le 10^5)n(1≤n≤105), 表示排列的长度. 第2行包含nn个整数a_1,a_2,...,a_na1,a2,...,an. 第3行包含nn个整数 b_1,b_2,...,b_nb1,b2,...,bn.数据中所有nn的和不超过2 \times 10^62×106.
输出描述
对于每组数据, 输出LCS的长度.
输入样例
231 2 33 2 161 5 3 2 6 43 6 2 4 5 1
输出样例
24
题目中给出的是两个排列, 于是我们可以先把排列分成若干个环, 显然环与环之间是独立的. 事实上对于一个长度为l (l > 1)l(l>1)的环, 我们总可以得到一个长度为l-1l1的LCS, 于是这个题的答案就很明显了, 就是nn减去长度大于11的环的数目.

代码:

#include 
#include
#include
#include
#include
#include
#pragma warning(disable:4996)using namespace std;const int maxn=1e5+10;bool vis[maxn];struct node{ int a,b;}p[maxn];bool cmp(node x,node y){ return x.a
>T; while(T--) { memset(vis,0,sizeof(vis)); int n; scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&p[i].a); for(int i=1;i<=n;i++) scanf("%d",&p[i].b); sort(p+1,p+1+n,cmp); int ans=0; for(int i=1;i<=n;i++) { if(vis[i]) continue; vis[i]=1; if(p[i].a==p[i].b) ans++; else { int pos=p[i].b; while(!vis[pos]) { ans++; vis[pos]=1; pos=p[pos].b; } } } printf("%d\n",ans); } //system("pause"); return 0;}

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/lightspeedsmallson/p/4899527.html

你可能感兴趣的文章
Ubuntu Touch将支持用户数据加密:目前暂无时间表
查看>>
《金蝶ERP—K/3标准财务模拟实训(11.X版)》——导读
查看>>
开发者必备:基于 Linux 生态的十大AI开源框架盘
查看>>
《基于ArcGIS的Python编程秘笈(第2版)》——2.10 更新图层的符号系统
查看>>
SAP的ABAP屏幕程序如何使用Table Control进行数据交互
查看>>
Visual Studio 将集成 Cordova 支持跨平台开发
查看>>
这些方法助你优化 Android 启动速度
查看>>
《简明电路分析》——2.4节单口网络
查看>>
《动手玩转Arduino》——10.4 作品36:做一个三区域触摸开关
查看>>
《位置大数据隐私管理》—— 导读
查看>>
如何在 Ubuntu 以及 Debian 中安装 DHCP 服务器
查看>>
《图数据库》——2.1 关系型数据库缺少联系
查看>>
16万Facebook数据告诉你,单身狗更爱养猫
查看>>
《JUnit实战(第2版)》—— 1.6 使用JUnit测试
查看>>
C++程序设计:原理与实践(进阶篇)17.6 Shape
查看>>
《JavaScript设计模式》——1.3 用对象收编变量
查看>>
《HTML5+CSS3网页设计入门必读》——1.6 再次联手
查看>>
永远不要在Linux执行的10个最危险的命令
查看>>
Discretized Streams, 离散化的流数据处理
查看>>
《嵌入式Linux基础教程(第2版)》——1.2 嵌入式Linux现状
查看>>