[科技]Loj#6564-最长公共子序列【bitset】
正题
题目链接:https://loj.ac/p/6564
题目大意
给两个序列a,ba,ba,b求它们的最长公共子序列。
1≤n,m,ai,bi≤7×1041\leq n,m,a_i,b_i\leq 7\times 10^41≤n,m,ai,bi≤7×104
解题思路
无意间看到的一个bitsetbitsetbitset科技。
首先设fi,jf_{i,j}fi,j表示aaa串匹配到第iii个bbb串匹配到第jjj个时的最长长度,做过dpdpdp套dpdpdp的应该知道fi,jf_{i,j}fi,j的性质。
0≤fi,j−fi,j−1≤10\leq f_{i,j}-f_{i,j-1}\leq 10≤fi,j−fi,j−1≤1
基本的思路就是设010101矩阵MMM满足fi,j=∑k=1jMi,kf_{i,j}=\sum_{k=1}^jM_{i,k}fi,j=∑k=1jMi,k然后用bitsetbitsetbitset优化转移
然后考虑一下怎么转移,我们先预处理出ppp数组其中pip_ipi表示数字iii出现的位置集合
我们的转移要把MMM中的111尽量的往前移动并且看能否加上一个新的111。
假设现在的字符是ccc,那么我们将使用pcp_cpc进行转移。
我们把MMM中每个111作为结尾分成若干段(最后的000也是一段,顺序是从低位到高位)。
那么对于一段中如果这一段pcp_cpc有111那么我们就取最前面的那个111,这样因为前面假设有jjj个111那么这次就匹配pcp_cpc最前面的那个作为j+1j+1j+1。
但是我们显然不可能一段一段做,我们可以考虑怎么把这个操作转成位运算
[科技]Loj#6564-最长公共子序列【bitset】相关推荐
- 触类旁通,经典面试题最长公共子序列应该这么答
作者 | labuladong 来源 | labuladong(ID:labuladong) [导读]最长公共子序列(Longest Common Subsequence,简称 LCS)是一道非常经 ...
- [csu/coj 1078]多个序列的最长公共子序列
题意:给n个序列,同一个序列里面元素互不相同,求它们的最长公共子序列. 思路:任取一个序列,对于这个序列里面的两个数ai,aj(i<j),如果对于其它每一个序列,都出现过ai,aj,且ai在aj ...
- Algorithm:C++/python语言实现之求旋转数组最小值、求零子数组、求最长公共子序列和最长公共子串、求LCS与字符串编辑距离
Algorithm:C++/python语言实现之求旋转数组最小值.求零子数组.求最长公共子序列和最长公共子串.求LCS与字符串编辑距离 目录 一.求旋转数组最小值 1.分析问题 2.解决思路 二.求 ...
- 51NOD 1006 最长公共子序列 Lcs 动态规划 DP 模板题 板子
给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的). 比如两个串为: abcicba abdkscab ab是两个串的子序列,abc也是,abca也是,其中abca是这两个字符串最 ...
- 最长公共子序列 LCS(模板) poj 1458
一.标准模板 #include <iostream> #include <stdio.h> #include <cstring> #include <vect ...
- 最长公共子序列(LCS)问题 Longest Common Subsequence 与最长公告字串 longest common substr...
问题描述:字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字符序列X="x0,x1,-,xm-1",序列Y=& ...
- 【动态规划】最长公共子序列与最长公共子串
1. 问题描述 子串应该比较好理解,至于什么是子序列,这里给出一个例子:有两个母串 cnblogs belong 比如序列bo, bg, lg在母串cnblogs与belong中都出现过并且出现顺序与 ...
- POJ 3080 多个串最长公共子序列
求多个串最长公共子序列,字典序最小输出.枚举剪枝+kmp.比较简单,我用find直接查找16ms #include<iostream> #include<string> #in ...
- java实现最长连续子序列_最长公共子序列 ||
问题:在 前一篇文章 最长公共子序列 | 的基础上要求将所有的最长公共子序列打印出来,因为最长公共子序列可能不只一种. 难点:输出一个最长公共子序列并不难,难点在于输出所有的最长公共子序列,我们需要在 ...
最新文章
- 算法训练 P0103
- - 运算符(C# 参考)
- 用git进行项目搭建
- 计算机类专业综合理论模拟试卷1,山东省2011年高等职业教育对口招生计算机类专业理论综合模拟试题(一)...
- python 小例子 源码 莫凡_100 个 Python 小例子(一)
- DWR的使用以及DWR中工具JS文件的使用
- stat函数_数据分析工具入门 掌握这些Excel函数就够了
- 你可能对电灯泡一无所知
- javascript模块_JavaScript中的模块
- 商户定价模型—风控人又一经典必学知识
- NOIP模拟测试25
- 动态的给python添加进度条_python动态进度条的实现代码
- java -jar命令
- python爬取喜马拉雅vip音频_Python简易爬虫教程(三)--爬取喜马拉雅音频
- matlab距离平方和公式推导,求助高手,用matlab求两幅图像平方和再开根号公式怎样表达?...
- apk部分手机安装失败_如何解决APK安装失败 INSTALL..
- cdr宏教程_CDR-VBA宏完整案例详解(上部)
- LINUX入门——Linux是什么?
- 微信小程序之网易云音乐(五)- 排行详情页、歌单详情页、播放器组件开发
- 开源配置管理系统的选择和搭建
热门文章
- axure 组件_技巧分享 | Axure后台组件制作的全过程
- androidstudio学习总结_Android 开发工程师自述:2年的开发,我总结了7条经验
- java 面相,java学习17-面相对象(多态)
- fb静态区域_fb 静态数据
- 新增一个主键自增长_MyBatis 示例-主键回填
- 用python画树_Python+Turtle动态绘制一棵树实例分享
- java socket send_java socket编程
- 云付认证已通过可以支付吗_海科融通丨刷新支付日常问题【附交易操作步奏】...
- 软件构造学习笔记-第九周、第十周
- leetcode20. 有效的括号