bzoj 4358: permu 莫队
第一步先莫队分块。
对于每一块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 莫队的更多相关文章
- bzoj 4358 Permu - 莫队算法 - 链表
题目传送门 需要高级权限的传送门 题目大意 给定一个全排列,询问一个区间内的值域连续的一段的长度的最大值. 考虑使用莫队算法. 每次插入一个数$x$,对值域的影响可以分成4种情况: $x - 1$, ...
- 【BZOJ】4358: permu 莫队算法
[题意]给定长度为n的排列,m次询问区间[L,R]的最长连续值域.n<=50000. [算法]莫队算法 [题解]考虑莫队维护增加一个数的信息:设up[x]表示数值x往上延伸的最大长度,down[ ...
- BZOJ 4358 坑 莫队+线段树 死T
这是一个坑 竟然卡nsqrt(n)logn T死 等更 //By SiriusRen #include <cmath> #include <cstdio> #include & ...
- [BZOJ 3236] [Ahoi2013] 作业 && [BZOJ 3809] 【莫队(+分块)】
题目链接: BZOJ - 3236 BZOJ - 3809 算法一:莫队 首先,单纯的莫队算法是很好想的,就是用普通的第一关键字为 l 所在块,第二关键字为 r 的莫队. 这样每次端点移动添加或删 ...
- bzoj 4358 permu
比较容易想到莫队算法+线段树,但是这样时间复杂度是O(nsqrtnlogn)无法通过,考虑如果不进行删除操作,只有添加操作的话那么并查集就可以实现了,于是可以设定sqrtn块,每个块范围为(i-1)* ...
- Bzoj 3339: Rmq Problem && Bzoj 3585: mex 莫队,树状数组,二分
3339: Rmq Problem Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 833 Solved: 397[Submit][Status][D ...
- bzoj 3757 树上莫队
感谢以下文章作者: http://blog.csdn.net/kuribohg/article/details/41458639 http://vfleaking.blog.163.com/blog/ ...
- BZOJ - 3757 树上莫队解决离线路径问题 & 学习心得
题意:给你一棵树,求u,v最短路径的XXX(本题是统计权值种类) 今天课上摸鱼学了一种有意思的处理路径方式(其实是链式块状树翻车了看别的),据说实际运行跑的比XX记者还快 大概就是像序列莫队那样 首先 ...
- BZOJ 3757 苹果树 ——莫队算法
挺好的一道题目,怎么就没有版权了呢?大数据拍过了,精神AC.... 发现几种颜色这性质比较垃圾,不可加,莫队硬上. %了一发popoqqq大神的博客, 看了一波VFK关于糖果公园的博客, 又找了wjm ...
随机推荐
- React Native iOS 离线包
平时使用React Native 时候, js代码和图片资源运行在一个Debug Server上(需要cd 到RN目录,然后终端执行 npm start 命令开启本地服务 ).每次更新代码之后只需要使 ...
- Alpha版本BUG BASH
在本次软件开发的第一轮迭代中,我们团队遇到了很多问题.首先是和学长联系不上导致拿到项目前一版本的代码的时间延后了一个星期. 拿到代码后发现由于安装环境的问题代码无法移植.在这一阶段我们就耗费了大量的时 ...
- wdatepicker控件de使用小方法汇总
在总结wdatepicker控件的使用前,先插播一条吧,下午刚心血来潮百度的一条 问?C#中Int16.Int32.Int64.之间的区别,:::嘿嘿其实百度知道就有,但还是写上吧! Int16 表示 ...
- keras+theano+tensorflow+darknet
keras 安装: 最好在anaconda的虚拟环境下搭建: conda create -n 环境名 python=3.6 进入环境: source activate 环境名 安装keras: pip ...
- Hibernate主键注解
http://www.cnblogs.com/hongten/archive/2011/07/20/2111773.html 版权声明:本文为博主原创文章,未经博主允许不得转载.
- 【CSAPP笔记】12. 高速缓存存储器
高速缓存存储器 在存储层次结构中,高速缓存存储器,也叫 cache 是最接近 CPU 寄存器的那一块. 更一般而言,缓存(caching)是一个无所不在的技术.缓存的意思是:对于每层的存储设备,位于 ...
- 29_Java_数据库_第29天(JDBC、DBUtils)_讲义
今日内容介绍 1.JDBC 2.DBUtils 01JDBC概念和数据库驱动程序 * A: JDBC概念和数据库驱动程序 * a: JDBC概述 * JDBC(Java Data Base Conne ...
- NodeJs异步的执行过程
我这里写了一个代码片段,用来模拟一个嵌套的异步过程,下面我总结了下这段代码的执行顺序var fs = require("fs"); fs.stat('a.txt',callback ...
- <构建之法>第一二三章感悟
第一章: 看了大概了解软件从一个想法到最终成品的一个过程.软件先是由一个想法引出的,有那个想法,你需要一个工具去做什么,根据自己想要的功能大概做一个能实现基本功能的软件,对客户提出的要求进行完善,实现 ...
- Struts hibernate Spring 框架原理
转自:http://www.cnblogs.com/javaNewegg/archive/2011/08/28/2156521.html 原理:1.通过Configuration().configur ...