博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
dirty机房训练赛-ants
阅读量:5034 次
发布时间:2019-06-12

本文共 1321 字,大约阅读时间需要 4 分钟。

只要会了回滚莫队的话

这道题还是很好做的

不然的话就可能陷入普通莫队加线段树修改的O(n*sqrt(n)*logn)的误区

用双向链表实现

不过我写了半天也没有写出来

干脆就不写了

顺手再贴上dalao的优美代码(真实)

#include
#include
#include
#include
#include
#include
#define my_min(a,b) ((a)<(b)?(a):(b))#define my_max(a,b) ((a)>(b)?(a):(b))using namespace std;struct questions{ int l,r,xh; questions(int _xh=0,int _l=0,int _r=0){ xh=_xh , l=_l , r=_r ; }}qs[500005],que[500005];bool cmp_l(const questions &a,const questions &b){ return a.l
=i && qs[now].l<=my_min(n,i+b_size-1)) que[++qnum]=qs[now] , ++now ; if(!qnum) continue ; ++TTT ; //for(int j=1;j<=n;++j) has[j]=false , bl[j]=br[j]=j ; / sort(que+1,que+qnum+1,cmp_r) ; int now_r=my_min(n,i+b_size-1) ; for(int j=1;j<=qnum;++j){ while(now_r
=que[j].l;--k){ int t=P[k] ; get_it(t,true) ; } ans[que[j].xh]=now_ans , restore() ; for(int k=my_min(my_min(n,i+b_size-1),que[j].r);k>=que[j].l;--k){ has[P[k]]=false ; } now_ans=t_ans ; } } for(int i=1;i<=m;++i) printf("%d\n",ans[i]) ;}int main(){ freopen("ants.in","r",stdin) ; freopen("ants.out","w",stdout) ; scanf("%d%d",&n,&m) ; for(int i=1;i<=n;++i) scanf("%d",&P[i]) ; for(int i=1;i<=m;++i){ scanf("%d%d",&qs[i].l,&qs[i].r) ; qs[i].xh=i ; } solve(); return 0 ;}

 

转载于:https://www.cnblogs.com/ENESAMA/p/10110020.html

你可能感兴趣的文章
css选择器
查看>>
photoplus
查看>>
Python 拓展之推导式
查看>>
[Leetcode] DP-- 474. Ones and Zeroes
查看>>
80X86寄存器详解<转载>
查看>>
c# aop讲解
查看>>
iterable与iterator
查看>>
返回顶部(动画)
查看>>
webpack+react+antd 单页面应用实例
查看>>
Confluence 6 SQL Server 数据库驱动修改
查看>>
Confluence 6 通过 SSL 或 HTTPS 运行 - 备注和问题解决
查看>>
【47.76%】【Round #380B】Spotlights
查看>>
Git(使用码云)
查看>>
分享Java web 开发必游之路
查看>>
IIS初始化(预加载),解决第一次访问慢,程序池被回收问题(转载)
查看>>
Bean的Scope
查看>>
【BZOJ】3142: [Hnoi2013]数列
查看>>
http初探
查看>>
elasticsearch的安装
查看>>
__next__()
查看>>