BZOJ 4358 坑 莫队+线段树 死T
2017-02-15 00:19
246 查看
这是一个坑
竟然卡nsqrt(n)logn
T死 等更
竟然卡nsqrt(n)logn
T死 等更
//By SiriusRen #include <cmath> #include <cstdio> #include <algorithm> using namespace std; #define Max(x,y) x>y?x:y; const int N=50050,T=50050*8; int n,m,Block,a ,block ,lmax[T],rmax[T],maxx[T],Pos[T],len[T],ans ; struct Ask{int l,r,id;}ask ; bool cmp(Ask a,Ask b){ if(block[a.l]==block[b.l])return a.r<b.r; return a.l<b.l; } bool cmpid(Ask a,Ask b){return a.id<b.id;} void build(int l,int r,int pos){ len[pos]=r-l+1; if(l==r){Pos[l]=pos;return;} int mid=(l+r)>>1,lson=pos<<1,rson=pos<<1|1; build(l,mid,lson),build(mid+1,r,rson); } void insert(int pos){ maxx[pos]=lmax[pos]=rmax[pos]=!maxx[pos]; while(pos!=1){ pos>>=1;int lson=pos<<1,rson=pos<<1|1; lmax[pos]=lmax[lson]+(lmax[lson]==len[lson])*lmax[rson]; rmax[pos]=rmax[rson]+(rmax[rson]==len[rson])*rmax[lson]; maxx[pos]=Max(maxx[lson],maxx[rson]); maxx[pos]=Max(lmax[rson]+rmax[lson],maxx[pos]); } } inline int read(){ char p=getchar();int x=0; while(p<'0'||p>'9')p=getchar(); while(p>='0'&&p<='9')x=x*10+p-'0',p=getchar(); return x; } int main(){ n=read(),m=read(),build(1,n,1); for(int i=1;i<=n;i++)a[i]=read(); for(int i=1;i<=m;i++)ask[i].l=read(),ask[i].r=read(),ask[i].id=i; Block=sqrt(n); for(int i=1;i<=n;i++)block[i]=(i-1)/Block+1; sort(ask+1,ask+1+m,cmp); for(int i=1,l=1,r=0;i<=m;i++){ for(;l<ask[i].l;l++)insert(Pos[a[l]]); for(;l>ask[i].l;l--)insert(Pos[a[l-1]]); for(;r<ask[i].r;r++)insert(Pos[a[r+1]]); for(;r>ask[i].r;r--)insert(Pos[a[r]]); ans[ask[i].id]=maxx[1]; } for(int i=1;i<=m;i++)printf("%d\n",ans[i]); }
相关文章推荐
- bzoj 4358: permu (莫队+栈||KD-tree||莫队+线段树)
- BZOJ 4358 坑 莫队+线段树 死T
- 【BZOJ4397】[Usaco2015 dec]Breed Counting【前缀和】【或莫队】【或线段树】【或可持久化线段树】
- 【BZOJ】4358: permu 莫队算法
- BZOJ 4129 树上带修莫队+线段树
- bzoj 3289: Mato的文件管理 莫队+线段树
- [BZOJ4540][Hnoi2016]序列(莫队/线段树)
- bzoj 4540: [Hnoi2016]序列 (莫队+ST表+单调栈|线段树)
- bzoj 3585 mex - 线段树 - 分块 - 莫队算法
- BZOJ 2038 2009国家集训队 小Z的袜子 莫队算法
- bzoj 3110: [Zjoi2013]K大数查询 树状数组套线段树
- 【BZOJ】【P3236】【Ahoi2013】【作业】【题解】【莫队】
- BZOJ-2038-小Z的袜子hose-莫队
- _bzoj1798 [Ahoi2009]Seq 维护序列seq【线段树 lazy tag】
- 【BZOJ 4631】4631: 踩气球 (线段树)
- bzoj 2120 数颜色 【带修改莫队模板】
- bzoj2124 等差子序列(hash+线段树)
- [bzoj2120][bzoj2453][莫队算法]数颜色
- [BZOJ3211][SPOJ2713][线段树]GSS 4(花神游历各国)[一般题]
- [bzoj5039][线段树][lazy]序列维护