bzoj1264: [AHOI2006]基因匹配Match

Posted AKCqhzdy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bzoj1264: [AHOI2006]基因匹配Match相关的知识,希望对你有一定的参考价值。

这题真的狠玄学。

想到一个O(n^2)的的做法,然而肯定是要挂的。

然后我就是mod咯。

把答案插进树状数组维护最大值。要倒着插入避免后面的继承了前面的。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;

int n,s[110000];
int lowbit(int x){return x&-x;}
void change(int x,int k)
{
    while(x<=n)
    {
        s[x]=max(s[x],k);
        x+=lowbit(x);
    }
}
int getsum(int x)
{
    int ret=0;
    while(x>=1)
    {
        ret=max(s[x],ret);
        x-=lowbit(x);
    }
    return ret;
}

//----------bit------------

int pos[21000][10],plen[21000];
int main()
{
    scanf("%d",&n);n*=5;
    memset(plen,0,sizeof(plen));
    int x;
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&x);
        pos[x][++plen[x]]=i;
    }
    
    int ans=0;
    memset(s,0,sizeof(s));
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&x);
        for(int j=5;j>=1;j--)
        {
            int d=getsum(pos[x][j]-1)+1;
            ans=max(ans,d);
            change(pos[x][j],d);
        }
    }
    printf("%d\n",ans);
    return 0;
}

 

以上是关于bzoj1264: [AHOI2006]基因匹配Match的主要内容,如果未能解决你的问题,请参考以下文章

BZOJ1264[AHOI2006]基因匹配Match DP+树状数组

BZOJ 1264 [AHOI2006]基因匹配Match

bzoj1264: [AHOI2006]基因匹配Match

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

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

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