博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RMQ(1)暴力O(n*n)
阅读量:4474 次
发布时间:2019-06-08

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

 

这题给的时限是10S,且数据量不大,可以O(n*(n+m))大概2e9   过。。。

**O(n3)优化到O(n2)用到了dp预处理

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #define MAXN 1000005 9 using namespace std;10 typedef long long ll;11 int a[100005];12 struct Edg{13 int l,r;14 int num,v;15 }e[10005];16 int b[100005],xor1[1000005];17 int main()18 { int n,m;19 20 scanf("%d%d",&n,&m);21 for(int i=1;i<=n;i++)22 {23 scanf("%d",&a[i]);24 }25 xor1[0]=0;26 for(int i=1;i<=1000000;i++)27 {28 xor1[i]=xor1[i-1]^i;29 }30 31 for(int i=1;i<=m;i++)32 {33 scanf("%d%d",&e[i].l,&e[i].r);34 e[i].num=i,e[i].v=0;35 }36 37 int res;38 for(int i=1;i<=n;i++)39 {40 for(int j=i;j<=n;j++)41 {42 res=xor1[a[i]]^xor1[a[j]]^min(a[i],a[j]);43 if(j==i) b[j]=res;44 else b[j]=max(res,b[j-1]);45 }46 for(int k=1;k<=m;k++)47 { if(e[k].l<=i&&i<=e[k].r)48 {49 e[k].v=max(e[k].v,b[e[k].r]);50 }51 52 }53 }54 for(int k=1;k<=m;k++)55 {56 printf("%d\n",e[k].v);57 }58 return 0;59 }

 

转载于:https://www.cnblogs.com/lnu161403214/p/8605250.html

你可能感兴趣的文章
Git
查看>>
ImageSwitcher 右向左滑动的实现方式
查看>>
数学之美读书笔记一信息的度量和作用
查看>>
《荣枯鉴》示伪卷八
查看>>
NLP 第10章 基于深度学习的NLP 算法
查看>>
win7下出现'telnet' 不是内部或外部命令,也不是可运行的程序或批处理文件的解决方法...
查看>>
Maven 依赖范围(转)
查看>>
Google Chrome中的高性能网络(转)
查看>>
[置顶] 数据结构之 二叉树的构造与遍历(先序,中序,后序,层次)
查看>>
Tomcat在处理GET和POST请求时产生的乱码问题
查看>>
XSS 攻击原理及防护
查看>>
操作符重载
查看>>
Docker 安装及问题处理
查看>>
JavaScript中的call 和apply的用途以及区别
查看>>
HashMap完全解读
查看>>
匿名内部类
查看>>
man命令重定向后有^H乱码问题
查看>>
自定义popupwindow(解决位置控制困惑)
查看>>
[LeetCode] 152. Maximum Product Subarray_Medium tag: Dynamic Programming
查看>>
Python入门系列——第6篇
查看>>