UVA 10635 Prince and Princess【LCS 问题转换为 LIS】_An55511的博客-程序员秘密

题目链接:

http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=19051

题意:

有两个长度分别为p+1q+1的由1n2之前的整数组成的序列,每个序列的元素各不相等,两个序列第一个元素均为1。求两个序列的最长公共子序列。

分析:

LCS的复杂度为O(pq),这题p,q最大为250 * 250,必T无疑。
注意题目说的每个序列的元素各不相等,那么就能保证我们可以把序列A的元素用1p+1重新进行赋值,把B中元素根据A的赋值找到对应的标号,用0表示没有出现过,那么问题就可以转化为LIS啦,时间复杂度O(nlogn),可以过了。
有关LIS的内容这里有一个http://blog.csdn.net/yukizzz/article/details/50620631

代码:

/*************************************************************************
    > File Name: 10635.cpp
    > Author: jiangyuzhu
    > Mail: [email protected] 
    > Created Time: Sat 18 Jun 2016 08:57:43 PM CST
 ************************************************************************/

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
#include<stack>
using namespace std;
#define sa(n) scanf("%d", &(n));
typedef pair<int, int>p;
const int maxn = 250 + 5, mod = 1e9 + 7, oo = 0x3f3f3f3f;
int a[maxn * maxn], b[maxn * maxn], nb[maxn * maxn];
int pos[maxn * maxn];
int dp[maxn * maxn];
int main (void)
{
    int t;sa(t);    
    for(int kas = 1; kas <= t; kas++){
        int n, p, q;sa(n);sa(p);sa(q);
        memset(pos, 0, sizeof(pos));
        for(int i = 0; i <= p; i++){
            sa(a[i]);
            pos[a[i]] = i;
        }
        memset(nb, 0, sizeof(nb));
        for(int i = 0; i <= q; i++){
            sa(b[i]);
            nb[i] = pos[b[i]];
        }
        memset(dp, 0x3f, sizeof(dp));
        for(int i = 0; i <= q; i++){
            *lower_bound(dp, dp + q + 1, nb[i]) = nb[i];
        }
        int ans = lower_bound(dp, dp + q + 1, oo) - dp;
        printf("Case %d: %d\n", kas, ans);
    }
    return 0;
}

转载于:https://www.cnblogs.com/Tuesdayzz/p/5758615.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/An55511/article/details/101633545

智能推荐

社区发现算法总结(二)_weixin_30768175的博客-程序员秘密

原文出处 http://blog.csdn.net/aspirinvagrant/article/details/45823329派系过滤CPM方法(clique percolation method)用于发现重叠社区,派系(clique)是任意两点都相连的顶点的集合,即完全子图。在社区内部节点之间连接密切,边密度高,容易形成派系(clique)。因此,社区内部的边有较大可能形成大的完...

jsp---EL表达式及servlet_输入框参数传递el表达式_单眼皮女孩i的博客-程序员秘密

jsp之EL表达式1、EL表达式过程图及servlet生命周期el作用:2、配置servlet3、servlet 继承HttpServlet(重写的方法)4、简单登录例子servlet内容jsp内容5、el获取数据--从各个域对象中6、简单运算7、获取复杂数据数组、list集合、map集合el的中括号与点的区别el常用web对象使用--(隐含对象)1、EL表达式EL 全名为Expression Language,翻译成中文表达式语言语法:${标识符}作用就是输出标识符的所代表的值。el出现目的:代

动态sql构建的过程_weixin_30456039的博客-程序员秘密

动态sql构建的过程 基本原理:使用xsqlbuilder框架完成动态sql的构建。基本流程:使用WebUtils.getParametersStartingWith(ServletActionContext.getRequest(), "s_")根据request找到提交请求的jsp页面并且找到请求参数,从参数中获得所有以s_开始的参数的...

阿里HR熬夜整理76道软件测试常见面试题_Python软件测试木子的博客-程序员秘密

1、问:你在测试中发现了一个bug,但是开发经理认为这不是一个bug,你应该怎样解决?首先,将问题提交到缺陷管理库里面进行备案。然后,要获取判断的依据和标准:·根据需求说明书、产品说明、设计文档等,确认实际结果是否与计划有不一致的地方,提供缺陷是否确认的直接依据;·如果没有文档依据,可以根据类似软件的一般特性来说明是否存在不一致的地方,来确认是否是缺陷;·根据用户的一般使用习惯,来确认是否是缺陷;·与设计人员、开发人员和客户代表等相关人员探讨,确认是否是缺陷;合理的论述,向测..

html中正文缩进2个字符_u013705728的博客-程序员秘密

函数:text-indent使用方式:正文 % 正文缩进两个字符

随便推点

轻量级web服务器nginx学习(6)———nginx实现负载均衡(与tomcat服务器应用)_lllyr(ฅ>ω<*ฅ)的博客-程序员秘密

文章目录1.环境配置1.1什么是Tomcat?1.2 配置实验环境2.tomcat静动态页面的访问3.nginx对tomcat实现负载均衡1.环境配置1.1什么是Tomcat?Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成Tomcat 服务器是一...

python模块 - 常用模块推荐_python常用模块文档_Watch_dou的博客-程序员秘密

本文转自博主皮皮http://blog.csdn.net/pipisorry/article/details/47185795python常用模块压缩字符当谈起压缩时我们通常想到文件,比如ZIP结构。在Python中可以压缩长字符,不涉及任何档案文件。 import zlibstring = """ Lorem ipsum dolor sit amet,

Android腾讯微薄客户端开发八:微博查看(转播,对话,点评)_weixin_30477293的博客-程序员秘密

Android如果是自己的微博,可以干掉它下面三幅图是转播,对话以及点评界面Java代码publicclassWeiboDetailActivityextendsActivity{privateDataHelperdataHelper;privateUserInfouser;p...

企业应用AI之路怎么走?飞桨实践有真知_百度大脑的博客-程序员秘密

AI大势之下,越来越多的企业积极拥抱AI。然而,现实与憧憬还有很大的距离。众多传统行业要实现AI应用还远没有想象中的那么简单。从企业中有人开始思考“我们面对的问题能不能用AI来解决”,到真正的实现高效、高质量的大生产,把AI技术的价值带入到企业的生产活动当中,是否存在一条可以参考、可以实践的路径?百度集团副总裁、深度学习技术及应用国家工程实验室副主任吴甜在WAVE SUMMIT 2021深度学习开发者峰会上,首次公开分享了飞桨通过与产业伙伴的广泛合作所观察到的实践路径。她指出,企业应用AI会经历三个

如何用python做模型_如何用Python在10分钟内建立一个预测模型_weixin_39947961的博客-程序员秘密

展开全部预测模型的分解过程我总是集中于投入有质量的时间在建模的初始32313133353236313431303231363533e59b9ee7ad9431333363353735阶段,比如,假设生成、头脑风暴、讨论或理解可能的结果范围。所有这些活动都有助于我解决问题,并最终让我设计出更强大的商业解决方案。为什么你要在前面花费这段时间,这有充分的理由:你有足够的时间投入并且你是无经验的(这是有影...