题解:

一道比较简单的题目

容易发现状态数只有5*n个

而转移需要满足i1<i2;j1<j2

那么很明显是二维平面数点

暴力一点就是二维树状数组+map

5nlog^3 比较卡常

但是注意到我们的dp是保证了i1<i2的

所以本质是扫描线+树状数组

5nlogn

由于代码非常简单编译调试一遍过

代码:

#include <bits/stdc++.h>
using namespace std;
#define IL inline
#define rint register int
#define rep(i,h,t) for (rint i=h;i<=t;i++)
#define dep(i,t,h) for (rint i=t;i>=h;i--)
#define mid ((h+t)/2)
#define me(x) memset(x,0,sizeof(x))
#define lowbit(x) (x&(-x))
const int N=2e5;
int n,a[N],b[N],f[N][],cnt[N];
char ss[<<],*A=ss,*B=ss;
IL char gc()
{
return A==B&&(B=(A=ss)+fread(ss,,<<,stdin),A==B)?EOF:*A++;
}
template<class T>IL void read(T &x)
{
rint f=,c; while (c=gc(),c<||c>) if (c=='-') f=-; x=(c^);
while (c=gc(),<c&&c<) x=(x<<)+(x<<)+(c^); x*=f;
}
IL void maxx(int &x,int y)
{
if (x<y) x=y;
}
struct sgt{
int data[N];
int query(int x)
{
int ans=;
while (x)
{
maxx(ans,data[x]);
x-=lowbit(x);
}
return(ans);
}
void insert(int x,int y)
{
while (x<=n)
{
maxx(data[x],y);
x+=lowbit(x);
}
}
}S;
int main()
{
freopen("1.in","r",stdin);
freopen("1.out","w",stdout);
read(n); n*=;
rep(i,,n) read(a[i]);
rep(i,,n) read(b[i]);
rep(i,,n)
f[b[i]][++cnt[b[i]]]=i;
int ans=;
rep(i,,n)
dep(j,,)
{
int kk=S.query(f[a[i]][j]-)+;
S.insert(f[a[i]][j],kk);
maxx(ans,kk);
}
cout<<ans<<endl;
return ;
}

【bzoj1264】[AHOI2006]基因匹配Match 树状数组的更多相关文章

  1. bzoj1264 [AHOI2006]基因匹配Match 树状数组+lcs

    1264: [AHOI2006]基因匹配Match Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1255  Solved: 835[Submit][ ...

  2. BZOJ 1264: [AHOI2006]基因匹配Match 树状数组+DP

    1264: [AHOI2006]基因匹配Match Description 基因匹配(match) 卡卡昨天晚上做梦梦见他和可可来到了另外一个星球,这个星球上生物的DNA序列由无数种碱基排列而成(地球 ...

  3. bzoj 1264: [AHOI2006]基因匹配Match (树状数组优化dp)

    链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1264 思路: n大小为20000*5,而一般的dp求最长公共子序列复杂度是 n*n的,所以我 ...

  4. BZOJ_1264_[AHOI2006]基因匹配Match_树状数组

    BZOJ_1264_[AHOI2006]基因匹配Match_树状数组 Description 基因匹配(match) 卡卡昨天晚上做梦梦见他和可可来到了另外一个星球,这个星球上生物的DNA序列由无数种 ...

  5. 洛谷P4303 [AHOI2006]基因匹配(树状数组)

    传送门 我已经连这种傻逼题都不会了orz 正常的dp是$O(n^2)$的,枚举第一个数组的$j$,然后第二个数组的$k$,如果相等,则$dp[i]=dp[j]+1$,否则$dp[i]=dp[j]$ 然 ...

  6. BZOJ1264: [AHOI2006]基因匹配Match

    1264: [AHOI2006]基因匹配Match Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 541  Solved: 347[Submit][S ...

  7. BZOJ1264 [AHOI2006]基因匹配Match 动态规划 树状数组

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1264 题意概括 给出两个长度为5*n的序列,每个序列中,有1~n各5个. 求其最长公共子序列长度. ...

  8. [BZOJ1264][AHOI2006]基因匹配Match(DP + 树状数组)

    传送门 有点类似LCS,可以把 a[i] 在 b 串中的位置用一个链式前向星串起来,由于链式前向星是从后往前遍历,所以可以直接搞. 状态转移方程 f[i] = max(f[j]) + 1 ( 1 &l ...

  9. BZOJ1264 [AHOI2006]基因匹配Match 【LCS转LIS】

    题目链接 BZOJ1264 题解 平凡的\(LCS\)是\(O(n^2)\)的 显然我们要根据题目的性质用一些不平凡的\(LCS\)求法 这就很巧妙了,, 我们考虑\(A\)序列的每个位置可能匹配\( ...

随机推荐

  1. 正则表达式处理BT的html嵌套问题

    在博问里面求教大神,把问题搞定.在此做个记录备份,也给碰到类似问题的园友提供解决思路. 简化的业务场景就是,在页面html标签中的属性中嵌套了html标签,怎么用用正则表达式过滤闭合的html标签(& ...

  2. _tcsdup这个函数容易出现堆错误

    #include <string.h> #include <stdio.h> #include <tchar> int main( void ) { TCHAR b ...

  3. 利用jsoncpp将json字符串转换为Vector

    在API测试过程中经常会遇到传入参数为复杂类型,一般情况下在python下,习惯用字典来表示复杂类型.但是c++对字符串的处理是比较弱智的,一般c++里边会用vector来存储复杂类型,那么就存在转换 ...

  4. Go Rand小结

    对于Random的使用,在业务中使用频率是非常高的,本文就小结下常用的方法: 在Golang中,有两个包提供了rand,分别为 "math/rand" 和 "crypto ...

  5. git bash的命令

    git bash cd /f   该命令可以把当前目录切换到f盘 git clone git上的项目的url

  6. CentOS 7安装Python3.5

    CentOS 7下安装Python3.5 •安装python3.5可能使用的依赖 yum install openssl-devel bzip2-devel expat-devel gdbm-deve ...

  7. vue项目中实现复制内容到剪贴板

    项目中要实现分享功能,现在各种接口都关闭了,而且不同的浏览器要使用不同的代码,最后决定直接复制url,然后手动分享 Vue中使用了vue-clipboard2 github地址:https://git ...

  8. js 对象的循环

    var car = {type:"Fiat", model:500, color:"white"}; var arr = array(); for(i in c ...

  9. Swift 学习- 07 -- 函数

    // 函数 // 函数是一段完成特定任务的独立代码片段, 你可以通过给函数命名来标识某个函数的功能, 这个名字可以被用来在需要的时候'调用'这个函数来完成它的任务 // swift 统一的函数语法非常 ...

  10. 尚硅谷《全套Java、Android、HTML5前端视频》

    尚硅谷<全套Java.Android.HTML5前端视频> (百万谷粉推荐:史上最牛.最适合自学的全套视频.资料及源码) [尚硅谷官网资料导航] 谷粒学院在线学习:http://www.g ...