码迷,mamicode.com
首页 > 其他好文 > 详细

bzoj1264: [AHOI2006]基因匹配Match

时间:2018-02-02 17:14:47      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:ace   ems   blog   mil   color   log   nbsp   while   using   

这题真的狠玄学。

想到一个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

标签:ace   ems   blog   mil   color   log   nbsp   while   using   

原文地址:https://www.cnblogs.com/AKCqhzdy/p/8405756.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!