博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
3339: Rmq Problem
阅读量:6352 次
发布时间:2019-06-22

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

Time Limit: 20 Sec  Memory Limit: 128 MB
Submit: 1269  Solved: 665
[][][]

Description

Input

Output

Sample Input

7 5
0 2 1 0 1 3 2
1 3
2 3
1 4
3 6
2 7

Sample Output

3
0
3
2
4

HINT

 

 

Source

裸地莫队题目,

每次加入一个数,如果当前答案等于加入的数,就暴力向上加

每次删除一个数,如果删除的那个数比当前的答案小,那么当前的答案就赋值程这个数

因此

add和dele函数都非常好些。

但是,,,,,

我写的莫队各种RE,WA,TLE,MLE。。。。。。。。。。。。

和标称拍了一头午也没拍出错误来。。。。

也是醉了。。。

 

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 using namespace std; 8 const int MAXN=3000011; 9 /*inline void read(int &n)10 {11 char c='+';int x=0;bool flag=0;12 while(c<'0'||c>'9'){c=getchar();if(c=='-')flag=1;}13 while(c>='0'&&c<='9')x=x*10+c-48,c=getchar();14 n=flag==1?-x:x;15 }*/16 const int BUF=30000010;17 char Buf[BUF],*buf=Buf;int BUFflag; 18 inline void read(int &now)19 {20 for(now=0; ! isdigit (*buf); ++buf);21 for(; isdigit ( *buf );now = now * 10+ (*buf-'0') ,++buf);22 }23 struct node24 {25 int l,r,bh,ans;26 }ask[MAXN];27 int n,q;28 int a[MAXN];29 int pos[MAXN];30 int base;31 inline int comp(const node &a,const node &b)32 {33 if(pos[a.l]==pos[a.l]) return pos[a.r]
ll;ll++)60 dele(ll);61 for(;ask[i].r
rr;rr++)64 add(rr+1);65 ask[i].ans=now;66 }67 for(int i=1;i<=q;i++)68 out[ask[i].bh]=ask[i].ans;69 for(int i=1;i<=q;i++)70 printf("%d\n",out[i]);71 }72 int main()73 {74 //freopen("a.in","r",stdin);75 // freopen("b.out","w",stdout);76 fread(buf,1,BUF,stdin);77 read(n);read(q);78 base=sqrt(n);79 for(int i=1;i<=n;i++)80 read(a[i]),pos[i]=(i-1)/base+1;81 for(int i=1;i<=q;i++)82 {83 int ll,rr;read(ll);read(rr);84 ask[i].l=ll;ask[i].r=rr;ask[i].bh=i;85 }86 sort(ask+1,ask+q+1,comp);87 modui();88 return 0;89 }
自己写的
1 #include
2 using namespace std; 3 const int maxn = 1000005; 4 inline int read() 5 { 6 int x=0,f=1;char ch=getchar(); 7 while(ch>'9'||ch<'0'){
if(ch=='-')f=-1;ch=getchar();} 8 while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} 9 return x*f;10 }11 int a[maxn],pos[maxn],c[maxn],Ans[maxn];12 int ans,n,m;13 struct query14 {15 int l,r,id;16 }Q[maxn];17 bool cmp(query a,query b)18 {19 if(pos[a.l]==pos[b.l])20 return a.r
Q[i].l)L--,Update(a[L]);59 while(R>Q[i].r)Delete(a[R]),R--;60 while(L
标称

 

转载地址:http://cjmla.baihongyu.com/

你可能感兴趣的文章
《慕客网:IOS基础入门之Foundation框架初体验》学习笔记 <一>
查看>>
Spring声明式事务管理之二:核心接口API
查看>>
LNMP环境安装(二)
查看>>
MFC对话框编程-图片控件
查看>>
nodejs启动webserver服务
查看>>
小偷被抓叫嚣:我不偷警察没饭吃
查看>>
python初学—-实现excel里面读数据进行排序
查看>>
用户体验升级后 “谁行谁上”让百度Q4财报更有底气
查看>>
直播相关学习链接
查看>>
使用RPM包工具和源码包编译安装Linux应用程序
查看>>
VoIP——开启免费通话新时代的先锋
查看>>
Linux下rsync的用法
查看>>
apache虚拟主机、日志轮询、日志统计、去版本优化
查看>>
java代码实现开启openoffice服务和关闭sffice.exe进程
查看>>
docker镜像的使用方法
查看>>
提升HTTPS安全评级
查看>>
iOS开发过程中的心得
查看>>
QOS配置命令
查看>>
linux安装搭建media-wiki
查看>>
使用 MPI for Python 并行化遗传算法
查看>>