[LCS][LIS]Uva10635]

dp(LCS转化成LIS)uva 10635 - Prince and Princess 题目链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1576 题目意思: 有两个数组,求两个数组的最长公共子序列长度。两个数组中数都在1~n*n范围内,且数组内没有任意两个数相同。 解题思路: 常见的LCS时间复杂度为o(n*n)肯定行 阅读详情

题目大意:求两个序列的LCS

一般来说,LCS复杂度O(n*n)

f[i][j]表示A串前i个,B串前j个的LCS
f[i][j]=f[i-1][j-1] (s1[i]==s2[j])
f[i][j]=max(f[i-1] [j],f[i][j-1])

但是

Input
The rst line of the input contains a single integer t (1 t 10), the number of test cases followed.
For each case, the rst line contains three integers n, p, q (2 n 250, 1 p; q < n n). The second
line contains p + 1 different integers in the range [1 : : : n n], the sequence of the Prince. The third line
contains q + 1 different integers in the range [1 : : : n n], the sequence of the Princess.
Output
For each test case, print the case number and the length of longest route. Look at the output for sample
input for details.
Sample Input
1
3 6 7
1 7 5 4 8 3 9
1 4 3 5 6 2 8 9
Sample Output
Case 1: 4

N是250*250,,所以n*n会爆掉,而且序列又不相同
所以可以把LCS转成LIS,,,

LCS->LIS原则:序列中字母或者数字各不相等。
做法:第一个序列映射,,转换第二个序列
1 5 3 7 2=1 2 3 4 5
5 9 3 7 2 1=2 0 3 4 5 1
注意,只有当找得到的映射才能计算,判断

复杂度:n*logn

#include<iostream>
#include<cstdio>
#include<ctime>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<string>
#include<set>
#include<map>
#include<vector>
#include<queue>
#include<algorithm>
#ifdef WIN32
#define AUTO "%I64d"
#else
#define AUTO "%lld"
#endif
#define INF 0x3f3f3f3f
#define clock CLOCKS_PER_SEC
#define cle(x) memset(x,0,sizeof(x))
#define maxcle(x) memset(x,127,sizeof(x))
#define mincle(x) memset(x,-1,sizeof(x))
#define cop(a,x) memcpy(x,a,sizeof(a))
#define FROP "Uva"
#define C(a,b) next_permutation(a,b)
#define LL long long
#define smin(x,tmp) x=min(x,tmp)
using namespace std;
const int N=655;
int mp[N*N],last[N*N],kase;
int a[N*N],b[N*N],ans;
int find(int x)
{
    int l=1,r=ans,tmp=0;
    while(l<=r)
    {
        int mid=(l+r)>>1;
        if(last[mid]<=x)tmp=mid,l=mid+1;
        else r=mid-1;
    }
    return tmp;
}
int main()
{
    freopen(FROP".in","r",stdin);
    freopen(FROP".out","w",stdout);
    int t;
    scanf("%d",&t);
    while(t--)
    {
        cle(a),cle(b),cle(mp),maxcle(last);
        int n,q,p;
        scanf("%d%d%d",&n,&q,&p);
        p++,q++;
        for(int i = 1; i<= q; i++)
            scanf("%d",&a[i]),mp[a[i]]=i;
        int pos=0;
        for(int i = 1; i<= p; i++)
        {
            int x;
            scanf("%d",&x);
            if(mp[x])b[++pos]=mp[x];
        }
        ans=0;
        for(int i = 1 ; i <= pos; i++)
        {
            int tmp=find(b[i]);
            if(last[tmp+1]>b[i])last[tmp+1]=b[i];
            ans=max(tmp+1,ans);
        }
        kase++;
        printf("Case %d: %d\n",kase,ans);
    }
    return 0;
}

调了很久,,发现数组开小了。。。。

UVa 10635(lcs转lis优化模板)王子和公主 例题27 王子和公主(Prince and Princess, UVa 10635) 有两个长度分别为p+1和q+1的序列, 每个序列中的各个元素互不 相同, 且都是1~n2之间的整数。 两个序列的第一个元素均为1。 求出A和 B的最长公共子序列长度。 【输入格式】 输入的第一行为数据组数T(T≤10) 。 每组数据包含3行, 第一行为3 116个整数n, p, q(2≤n≤250, 阅读详情

相关推荐

企业微信/飞书/钉钉扫码连WiFi保姆级教程(附访客授权技巧)

本文提供了一份企业微信、飞书、钉钉扫码连接WiFi的实战部署教程。通过集成标准Radius协议与OAuth 2.0,企业可实现基于身份的无密码网络认证,并详细介绍了访客授权、权限分级等精细化管理技巧,有效提升无线网络的安全性与员工体验。

t4y5u6i7o的博客 1194

uva 11456 - Trainsorting(LIS)

题目链接:uva 11456 - Trainsorting 题目大意:给出n,表示有n节车厢,然后第i节车厢重量为t[i],位于第i个车站,列车长从有强迫症,一定要求说列车的车箱要按照质量从大到小排序,所以他按照序号一次经过每一个车站,可以考虑是否添加位于该车站的车厢,添加的话也只能放在已有车列的前端和后端,不能说从中间插入,问说列车最多能有多长。 解题思路:将序列逆序储存,然

不慌不忙、不急不躁 2056

给MATLAB安装runtime插件

输入你刚刚下载压缩包的位置(小白提示:在 此电脑 中找到压缩包位置,右键属性复制位置)(!设置好以后然后填写下面输出exe文件的信息,包括文件的名字、作者、Email、公司、概述、描述,下面还可以选择额外的安装选项,exe文件运行需要的其他文件(图像、子程序等)、提供给用户的文件(readme.txt等)(很多方法是官网下载,但在官网下载还是会版本不对应,所以直接在你所用的MATLAB里搜索安装链接最靠谱)(!5.可以打包程序了(你发送文件的人电脑里没有MATLAB也可以查看运行你的程序了)

Pei_hua100的专栏 1万+

UVA - 531Compromise(LIS)

题目:UVA - 531Compromise(LIS) 题目大意:给出两段话,找出里面最长的公共单词的子序列。并且输出任意一个子序列。 解题思路:LIS。 代码: #include #include const int N = 105; const int M = 35; char w1[N][M]; char w2[N][M]; int f[N][N]

1078

Matlab实战:用卡尔曼滤波搞定无人机GPS轨迹优化(附完整代码)

本文详细介绍了如何使用Matlab实现卡尔曼滤波(KF)算法优化无人机GPS轨迹,提供完整代码和工程实践指南。通过线性卡尔曼滤波技术,有效降低定位噪声,提升轨迹平滑度,适用于无人机导航和控制系统开发。

weixin_29061425的博客 253

ESP32S3 Korvo2V3四通道AEC配置实战:基于AFE的回声消除优化

本文详细介绍了在ESP32S3 Korvo2V3平台上配置四通道AEC(回声消除)的实战经验。通过AFE算法优化和硬件连接调试,实现高质量回声消除,显著提升智能音箱和会议设备的语音交互体验。重点解析了四通道配置、数据格式对齐和参数调优等关键技术要点。

elastic6hunter的博客 932

UVA - 10599Robots(II)(LIS)

题目: UVA - 10599Robots(II)(LIS) 题目大意:一个N * M 的矩阵,上面有些格子上有垃圾,现在要求一个机器人从1,1的格子出发,往右或是往下走最终到达N * M各格子,沿途要收集最多的垃圾。现在将垃圾编号,要求输出最多能清理的垃圾并且输出这样的清理路线有多少条,输出其中字典序最小的那一条。 解题思路:一开始还以为是简单的dp,结果输出发现路径多了好多

1007

Carla自动驾驶仿真一:快速安装与运行Carla

网上有不少的Windows版本的Carla的安装教程,这里简单记录下自己安装过程,写的也比较详细,基本不用看其他文章。

zataji的博客 2万+

LIS路径记录(UVA481)

出自一次很失败的开学测试 LIS自然会做 可以参见:https://blog.youkuaiyun.com/Radium_1209/article/details/79704234 由于对于LIS的nlogn算法不熟悉,导致错误理解,记录的路径出现了问题,其中还用了n^2的算法记录路径(好理解),但是不出所料T了。 正确的方法应该是:由于nlogn算法中,dp[i]存...

weixin_30493401的博客 243

〔重庆理工大学〕计算机组成原理课设报告--16位单周期CPU设计

本课程设计的实验平台为Altera Quartus II 软件和Altera Cyclone V Starter 工具箱。(1)Cyclone V是Altera FPGAs家族的一类,它面向低功耗应用。Cyclone V GX 5CGXFC5C6F27C7N 芯片有不同的转换器,按钮,LED灯,七段显示器,HDMI接口,SD卡读卡器以及其他链接等。Cyclone V GX 5CGXFC5C6F27C7N是Starter工具箱的重要组件。(2)测试台包含在测设备(DUT)和用于仿真的模拟输入。

Pretty Boy Fox的博客 1066

基于C#开发ABB机器人上位机系统:从操作控制到数据交互的全方位实现

ABB工业机器人是世界领先的自动化设备之一,广泛应用于焊接、装配、搬运、喷涂、包装等多个行业。机器人控制器:用于控制机器人运动、路径规划、状态监控等。上位机系统:提供人机交互界面,允许操作员与机器人进行交互,实现实时控制、参数调整和数据分析。上位机系统通过与机器人控制器通信,采集机器人状态数据,发送控制指令,实现远程监控和控制操作。通过高效的操作界面和数据交互,可以大大提高机器人的工作效率和系统的可维护性。基于C#开发ABB机器人上位机系统,能够实现高效的机器人控制与实时数据交互。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1178

LIS的简单应用:UVA-437

上一次紫芝详细地介绍了动态规划中的经典问题LIS,今天我们抽出一个类似思想的简单题目进行实践练习。 The Tower of Babylon(巴比伦塔) Perhaps you have heard of the legend of the Tower of Babylon. Nowadays many details of this tale have been forgotten...

199

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

UVA 10635 王子和公主(LCS转LIS)

题目:https://vjudge.net/problem/UVA-10635 传统LCS问题时间复杂度为O(p*q),但是此题p*q高达250*250=62500,有些太慢 所以把问题转化为LIS,时间复杂度变为(n*logn) 先把A串的每个字符的位置记录一下, 然后把B串的元素转换成A串的位置,相当于求LIS。 #include<bits/stdc++.h> usin...

weixin_43568895的博客 222

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

UVa10635--Prince and Princess(LCS转LIS)

题目:UVa10635 分析:由于每个序列中的所有元素各不相同,所以可以先将任意一个序列的元素,修改为该序列中当前元素在另一个序列中对应元素的下标。没有匹配的就设为0或舍弃不要。这样就将LCS问题转化为了LIS,时间复杂度就降下来了。 代码: #include #include #include #include using namespace std; const

Apple.Daily的专栏 437

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

uva10635 Prince and Princess LCS 变 lIS

// 10635 Prince and Princess LCS 变 lIS // 本意求LCS,但是规模有60000多,复杂度肯定不够 // 注意如果俩个序列的值的范围相同,那么可以在一个 // 串中记录在另外一个串中的位置。这样就可以转化成 // 最长上升子序列的问题啦,复杂度是nlogn,可以ac // 这题,还是挺有考究的价值的,很不错 // 哎,继续练吧。。。。。 #include

TIMELIMITE的专栏 834

uva-10635 Prince and Princess LCS转化为LIS

题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=18 一个序列的最大长度是250*250,如果当作普通的LCS问题处理,得开二维数组dp[][],对于此题绝对是无限爆内存的。 题目的特殊之处在于: *(关键)1.每个序列的元素各不相同。 2.元素的值是有一

便纵有千种风情 519

UVA - 10635 - Prince and Princess (LCS转化为LIS)

题目传送:UVA - 10635 思路:直接思路是两个串的LCS,不过这个题可以转化为LIS,因为说了序列中各个元素互不相同,所以可以来个映射算出第二个字符串中的字符对应第一个字符串中字符的位置(不存在即删去),然后算出这些位置的LIS即可 AC代码: #include #include #include #include #include #include #i

Never say never 819

Prince and Princess UVA - 10635(LCS转换LIS)

Prince and Princess UVA - 10635题意:给出两个数串, 求出最长公共子序列(LCS);直接求LCS, O(n^2)的复杂度, 超时;题目说明, 数列中不会出现...

Sirius_han的博客 305

Uva 10635(LCS转LIS)

题面 王子和公主 题意 有两个长度分别为p+1p+1p+1(A序列)和q+1q+1q+1(B序列)的序列,每个序列的各个元素互不相同,且都是111到n2n^2n2之间的数,求两个序列的LCSLCSLCS 思路 因为序列的各个元素互不相同,那么对A序列里面的元素建立映射,每个元素的映射为这个元素的下标,再对B序列里面的元素赋值为该元素对应的映射,如果没有出现过就赋值为0,这样只要是B的上升子序列那么必然是A的子序列(因为A里面元素对应的值是下标,所以是上升的),那么A和B的LCS就是此时B的LIS 代码 #i

m0_52062421的博客 222

UVA 10635 Prince and Princess【LCS 问题转换为 LIS】

题目链接: http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=19051 题意: 有两个长度分别为p+1和q+1的由1到n2之前的整数组成的序列,每个序列的元素各不相等,两个序列第一个元素均为1。求两个序列的最长公共子序列。 分析: LCS的复杂度为O(p∗q),这题p,q最...

An55511的博客 324

UVA 10635

回头看了看LCS。做了几道水题,被一道题的时间给卡住了 题目:UVA10635 用常规的LCS做法做,怎么都超时间,想了想,一共62500那么大,n^2的时间复杂度确实是太高了,看了下白书,发现用LIS的方式很简单就能做出来,而且因为每个数字不一样,时间复杂度降低到了nlogn的复杂的。 思路大概就是因为要用LIS,所以需要有序,我们思考一下怎么才能有序呢,输入的顺序就是有序的,那么我们把输入顺序...

weixin_44019404的博客 313

UVA 10635 Prince and Princess(LIS)

又是训练指南上的一道经典题~~ http://uva.onlinejudge.org/external/106/10635.html 题意:有两个长度分别为p+1和q+1的序列,每个序列各个元素互不相同,且都是1~n^2的整数。求俩序列的LCS。 分析:LCS的O(pq)复杂度显然太慢。注意到“每个序列各个元素互不相同,且都是1~n^2的整数”,所以有个巧妙的转换,把A中的元素...

diaoqisi8354的博客 181

uva10635(lcs lis O(NlgN))

题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=18&page=show_problem&problem=1576 题干大意: 找最长的类似子字符串 考虑: 首先想到用类似lcs的方式计算结果,但是250^2^2显然内存放不下而且也超时,之后网上看到了lis lcs的Nlg

zb1030415419的博客 1442

UVA 10635,Prince and Princess(LCS→LIS优化)

原本是用LCS优化过的,后来看到有些大牛都是10MS就过的,觉得甚是神奇,就去查了一下,原来可以将LCS转为LIS,而LIS可以有NlogN的算法。 关于LIS的NlogN的做法,可看博客: https://blog.youkuaiyun.com/shuangde800/article/details/7474903 LCS→LIS,可看博客: https://blog.youkuaiyun.com/guogaoan/a...

shamansi99的博客 289

LCS,LIS(王子和公主,uva 10635)

一开始就按着LCS做。超时。 还是该好好分析一下时间复杂度,O(pq)==O(n^4),只能跑规模为n==100的数据,然而n==250。 竟然把LCS问题转化成了LIS问题。。 之所以可以转化,那是因为两个序列内的元素都分别是不重复的。 把第一个序列内所有元素根据顺序按正整数编号。不用把数据保存下来,只用编好号就OK。 然后读入第二个序列,如果这个元素没有编号,说明

xl2015190026的博客 500
上一篇: [NOIP模拟][费马小定理][高精度]
下一篇: [LCS]Uva531 Compromise
Freddddddddddd
博客等级 码龄10年 2粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值