第一步先莫队分块。

  对于每一块l~r,初始右端点设为r+1,然后每个询问先将右端点往右移,然后处理询问在l~r之间的部分,最后用一个栈再把l~r的复原。

  具体来说是维护两个数组now1和now2,一个向右最长的长度,一个向左的长度,每插入一个值x,用x+1的now2更新x的now2,用x-1的now1更新x的now1,now1[x]+now2[x]-1可能为最终答案,再把x所在的最长区间的左右端点的now数组更新,中间的值不需要更新,因为不可能再往中间插入数了。

  有生以来第一次bzoj榜一。

  

 #include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define N 50005
#define d 223
using namespace std;
int n,m;
int c[N];
int ans[N];
struct node
{
int l,r,id,yuan;
friend bool operator < (node aa,node bb)
{
if(aa.id!=bb.id)return aa.id<bb.id;
return aa.r<bb.r;
}
}a[N];
int now1[N],now2[N];
int st1[N*],st2[N*],top;
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)scanf("%d",&c[i]);
for(int i=;i<=m;i++)
{
scanf("%d%d",&a[i].l,&a[i].r);
a[i].yuan=i;a[i].id=(a[i].l-)/d+;
}
sort(a+,a+m+);
int as=;int r=,t=;
for(int i=;i<=m;i++)
{
if(a[i].id!=a[i-].id)
{
as=;
memset(now1,,sizeof(now1));
memset(now2,,sizeof(now2));
r=t=a[i].id*d;
}
while(a[i].r>r)
{
r++;
now1[c[r]]=now1[c[r]+]+;
now2[c[r]]=now2[c[r]-]+;
int tt=now1[c[r]]+now2[c[r]]-;
now2[c[r]+now1[c[r]]-]=tt;
now1[c[r]-now2[c[r]]+]=tt;
as=max(as,tt);
}
int tmp=as;top=;
for(int j=a[i].l;j<=min(a[i].r,t);j++)
{
now1[c[j]]=now1[c[j]+]+;
now2[c[j]]=now2[c[j]-]+;
int tt=now1[c[j]]+now2[c[j]]-;
int rr=c[j]+now1[c[j]]-;int ll=c[j]-now2[c[j]]+;
st1[++top]=rr;st2[top]=now2[rr];
st1[++top]=ll;st2[top]=now1[ll];
now2[rr]=tt;
now1[ll]=tt;
tmp=max(tmp,tt);
}
for(int j=top;j>=;j--)
{
if(j%==)now1[st1[j]]=st2[j];
else now2[st1[j]]=st2[j];
}
for(int j=a[i].l;j<=min(a[i].r,t);j++)
{
now1[c[j]]=now2[c[j]]=;
}
ans[a[i].yuan]=tmp;
}
for(int i=;i<=m;i++)printf("%d\n",ans[i]);
return ;
}

bzoj 4358: permu 莫队的更多相关文章

  1. bzoj 4358 Permu - 莫队算法 - 链表

    题目传送门 需要高级权限的传送门 题目大意 给定一个全排列,询问一个区间内的值域连续的一段的长度的最大值. 考虑使用莫队算法. 每次插入一个数$x$,对值域的影响可以分成4种情况: $x - 1$, ...

  2. 【BZOJ】4358: permu 莫队算法

    [题意]给定长度为n的排列,m次询问区间[L,R]的最长连续值域.n<=50000. [算法]莫队算法 [题解]考虑莫队维护增加一个数的信息:设up[x]表示数值x往上延伸的最大长度,down[ ...

  3. BZOJ 4358 坑 莫队+线段树 死T

    这是一个坑 竟然卡nsqrt(n)logn T死 等更 //By SiriusRen #include <cmath> #include <cstdio> #include & ...

  4. [BZOJ 3236] [Ahoi2013] 作业 && [BZOJ 3809] 【莫队(+分块)】

    题目链接: BZOJ - 3236   BZOJ - 3809 算法一:莫队 首先,单纯的莫队算法是很好想的,就是用普通的第一关键字为 l 所在块,第二关键字为 r 的莫队. 这样每次端点移动添加或删 ...

  5. bzoj 4358 permu

    比较容易想到莫队算法+线段树,但是这样时间复杂度是O(nsqrtnlogn)无法通过,考虑如果不进行删除操作,只有添加操作的话那么并查集就可以实现了,于是可以设定sqrtn块,每个块范围为(i-1)* ...

  6. Bzoj 3339: Rmq Problem && Bzoj 3585: mex 莫队,树状数组,二分

    3339: Rmq Problem Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 833  Solved: 397[Submit][Status][D ...

  7. bzoj 3757 树上莫队

    感谢以下文章作者: http://blog.csdn.net/kuribohg/article/details/41458639 http://vfleaking.blog.163.com/blog/ ...

  8. BZOJ - 3757 树上莫队解决离线路径问题 & 学习心得

    题意:给你一棵树,求u,v最短路径的XXX(本题是统计权值种类) 今天课上摸鱼学了一种有意思的处理路径方式(其实是链式块状树翻车了看别的),据说实际运行跑的比XX记者还快 大概就是像序列莫队那样 首先 ...

  9. BZOJ 3757 苹果树 ——莫队算法

    挺好的一道题目,怎么就没有版权了呢?大数据拍过了,精神AC.... 发现几种颜色这性质比较垃圾,不可加,莫队硬上. %了一发popoqqq大神的博客, 看了一波VFK关于糖果公园的博客, 又找了wjm ...

随机推荐

  1. ffplay.exe操作方式

    大牛博客: 博文名称:[总结]FFMPEG视音频编解码零基础学习方法 博文链接:http://blog.csdn.net/leixiaohua1020/article/details/15811977 ...

  2. RBC:Echo设备2020年可为亚马逊贡献100亿美元收入

    BI 中文站 12 月 22 日报道 加拿大皇家银行资本市场(RBC Capital Markets)分析师马克-马哈尼(Mark Mahaney)表示,亚马逊是首批将智能音箱引进主流受众的公司之一, ...

  3. "prefs:root" or "App-Prefs:root"

    iOS 苹果审核也是看心情的吗?已经上线几个版本了,新版本提交审核居然被查出来了! Guideline 2.5.1 - Performance - Software Requirements Your ...

  4. 阿里nas挂载错误

    报错如下,解决:yum install nfs-utils 即可 mount: wrong fs type, bad option, bad superblock on 12080482f3-qra4 ...

  5. C++ 类 析构函数

    一.析构函数的定义 析构函数为成员函数的一种,名字与类名相同,在前面加‘~’没有参数和返回值在C++中“~”是位取反运算符.一个类最多只能有一个析构函数.析构函数不返回任何值,没有函数类型,也没有函数 ...

  6. sprint3(第一天)

    1.今天计划了sprint3要做的内容: 整合前台和后台,然后发布让用户使用,然后给我们反馈再进行改进 2.backlog表格: ID Name Est How to demo 1 实现用户登录与权限 ...

  7. win10系统下载-靠谱推荐

    win10系统下载的靠谱推荐: 1.http://www.xitongtiandi.net/wenzhang/win10/12926.html 2.https://msdn.itellyou.cn/ ...

  8. Oracle安装后出现的问题

    安装oracle没有勾选"安装模板数据库",可以通过执行以下命令进行修改: cd $ORACLE_HOME/rdbms/admin 到这个目录下sqlplus /as sysdba ...

  9. 对TCP/IP网络参数进行调整

    对TCP/IP网络参数进行调整 调整TCP/IP网络参数,可以增强抗SYN Flood的能力,命令如下所示:# echo 'net.ipv4.tcp_syncookies = 1' >> ...

  10. Beta阶段——2

    一.提供当天站立式会议照片一张: 二. 每个人的工作 (有work item 的ID) (1) 昨天已完成的工作: 昨天主要是对beta阶段的任务做了总结 (2) 今天计划完成的工作: 今天主要是对管 ...