表面上看这是一道LCS问题

LCS问题O(n2)的复杂度已经很优秀了

而这道题需要O(nlogn)以下的复杂度才能AC

所以我们要找经典问题的特殊性

特殊就在这两个串中,每个数字都是恰好出现5次

不难想到先预处理每个数在B串依次出现的位置

先扫一遍A串,对于每一个数a[i],设f[j]=LCS(i,j)

显然这个数在B串出现的位置才会更新答案

对于每个出现的位置x1~x5,显然f[x]=max(f[w])+1 (1<=w<=x-1);

为了避免重复更新,我们要从后往前更新f[x]

再考虑怎么快速找到最大值,显然这里要找的是前缀中的最大值

不难想到,我们可以通过树状数组维护

 var b,f,a,c:array[..] of longint;
    w:array[..,..] of longint;
    j,n,i,x,ans:longint; function max(a,b:longint):longint;
  begin
    if a>b then exit(a) else exit(b);
  end; function lowbit(x:longint):longint;
  begin
    exit(x and (-x));
  end; function get(x:longint):longint;
  begin
    get:=;
    while x> do
    begin
      get:=max(get,c[x]);
      x:=x-lowbit(x);
    end;
  end; procedure update(x,p:longint);
  begin
    while x<=*n do
    begin
      c[x]:=max(c[x],p);
      x:=x+lowbit(x);
    end;
  end; begin
  readln(n);
  for i:= to *n do
    read(a[i]);
  for i:= to *n do
  begin
    read(x);
    inc(b[x]);
    w[x,b[x]]:=i;
  end;
  for i:= to *n do
  begin
    for j:= downto do
    begin
      x:=w[a[i],j];
      f[x]:=get(x-)+;
      update(x,f[x]);
    end;
  end;
  for i:= to *n do
    ans:=max(f[i],ans);
  writeln(ans);
end.

bzoj1264的更多相关文章

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

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

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

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

  3. 【BZOJ1264】[AHOI2006]基因匹配Match DP+树状数组

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

  4. BZOJ1264——[AHOI2006]基因匹配Match

    1.题意,求最长公共子序列,每个数字在序列中都出现5次 2.分析:最长公共子序列的标准解法是dp,$O(n^2)$过不了的,然后我们发现判断哪两个位置优化的地方用$5n$就可以搞定了,那么我们用BIT ...

  5. [BZOJ1264][AHOI2006]Match(DP+树状数组)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1264 分析: 考虑做一般的LCS的时候,更新结果的条件是a[i]==b[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 树状数组

    题解: 一道比较简单的题目 容易发现状态数只有5*n个 而转移需要满足i1<i2;j1<j2 那么很明显是二维平面数点 暴力一点就是二维树状数组+map 5nlog^3 比较卡常 但是注意 ...

  8. bzoj1264 [AHOI2006]基因匹配

    Description 基因匹配(match) 卡卡昨天晚上做梦梦见他和可可来到了另外一个星球,这个星球上生物的DNA序列由无数种碱基排列而成(地球上只有4种),而更奇怪的是,组成DNA序列的每一种碱 ...

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

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

随机推荐

  1. VS2015 Cordova Ionic移动开发(一)

    一.Windows环境配置 1.如果已经安装VS2015,打开[工具]-[选项]找到Cordova选项: 运行依赖关系查看器,用来检测开发环境是否完整. 如果检测显示: 那么就是环境配置完成了.可以直 ...

  2. js如何打印object对象

    js调试中经常会碰到输出的内容是对象而无法打印的时候,光靠alert只能打印出object标示,却不能打印出来里面的内容,甚是不方便,于是各方面整理总结了如下一个函数,能够将数组或者对象这类的结果一一 ...

  3. 关于ligerui 中 grid 表格的扩展搜索功能在远程数据加载时无法使用的解决办法

    要想使用grid里的扩展搜索功能,除了要引用ligerui主要的js文件外,还必须引入下面的JS文件: 1.Source\demos\filter\ligerGrid.showFilter.js 2. ...

  4. IOS GCD 的理解

    GCD (Grand Central Dispatch) 是Apple公司开发的一种技术,它旨在优化多核环境中的并发操作并取代传统多线程的编程模式. 在Mac OS X 10.6和IOS 4.0之后开 ...

  5. 2014年9月21日_随笔,jdic,ETL,groovy,Nutz好多东西想学

    (1)老妈十一要回老家,才突然发现买票好难啊.有亲朋很重要 (2)这周我做了什么.jdic,ETL,groovy, Nutz好多东西想学. Nutz开发成员专访.Nutz优酷视频(演讲).Nutz 入 ...

  6. 常用数据与VARIANT之间的转换---从网上整理

    //头文件 1 #pragma once class VariantConvert { public: VariantConvert(void); ~VariantConvert(void); pub ...

  7. bzoj3351:[ioi2009]Regions

    思路:首先如果颜色相同直接利用以前的答案即可,可以离线排序或是在线hash,然后考虑怎么快速统计答案. 首先如果点a是点b的祖先,那么一定有点b在以点a为根的子树的dfs序区间内的,于是先搞出dfs序 ...

  8. C#中的Collections命名空间

    System.Collections命名空间包含可使用的集合类和相关的接口. 该命名空间下的.NET非泛型集合类如下所示: — System.Collections.ArrayList:数组集合类,使 ...

  9. 常用js函数

    1.获得元素到页面的绝对距离 function getPos(obj) { var pos = {left:0, top:0}; while (obj) { pos.left += obj.offse ...

  10. JavaScript入门介绍(一)

    JavaScript入门介绍 [经常使用的调试工具][w3school.com.cn在线编辑] [Chrome浏览器 开发调试工具]按F121.代码后台输出调试:console.log("t ...