博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdoj6483 A Sequence Game(ST预处理RMQ+莫队)
阅读量:6941 次
发布时间:2019-06-27

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

传送:

题意:有长度为$n$的数组,对于一个子区间$[l,r]$内,存在最大值$mx$与最小值$mi$,有$q$的询问,每个询问要求判断在某个子区间$[l,r]$内$[mi,mx]$的值是否连续存在,即$mi,mi+1,....,mx$每个数都出现过至少一次。$T=5,1<=n<=10000,1<=a_i<=10^9,1<=m<=100000$

分析:

多个区间查询问题,考虑莫队算法。

对于每一个询问,需要判断$mi$到$mx$内的数是否全部存在,且需要知道$mi$与$mx$。考虑先预处理出每个子区间的最值,离线查询。

$a_i<=10^9$,数组$num[]$没办法开下,需要离散化处理。

先ST预处理最值,然后离散化,莫队求区间内值种类的个数。

代码:

1 #include
2 using namespace std; 3 const int maxn=1e5+10; 4 struct node{ 5 int l,r,id,block,mx,mi; 6 }q[maxn]; 7 int a[maxn],b[maxn],maxPoint[maxn][30],minPoint[maxn][30],num[maxn]; 8 bool ans[maxn]; 9 int cnt=0,n,m,block,ll,rr;10 bool cmp(node p,node q){11 return p.block
<< (j - 1));30 minPoint[i][j] = min(minPoint[i][j - 1], minPoint[i + p][j - 1]);31 maxPoint[i][j] = max(maxPoint[i][j - 1], maxPoint[i + p][j - 1]);32 }33 }34 }35 int queryMin(int l, int r){36 int k = log2((double)(r - l + 1));37 return min(minPoint[l][k], minPoint[r - (1 << k) + 1][k]);38 }39 40 int queryMax(int l, int r){41 int k = log2((double)(r - l + 1));42 return max(maxPoint[l][k], maxPoint[r - (1 << k) + 1][k]);43 }44 bool calc(node tmp){45 if (tmp.mx-tmp.mi+1==cnt) return true;46 return false;47 }48 void init2(){49 sort(b+1,b+1+n);50 int tmp=unique(b+1,b+1+n)-(b+1);51 for (int i=1;i<=n;i++){52 a[i]=lower_bound(b+1,b+1+tmp,a[i])-b;53 num[i]=0;54 }55 } 56 int main(){57 int t; scanf("%d",&t);58 while (t--){59 scanf("%d%d",&n,&m);60 for (int i=1;i<=n;i++){61 scanf("%d",&a[i]);62 b[i]=a[i];63 }64 init();65 //离散化66 block=sqrt(n);67 for (int i=0;i
q[i].l) add(--ll);79 while (rr
q[i].r) del(rr--); 81 ans[q[i].id]=calc(q[i]);82 }83 for (int i=0;i
hdoj6483

 

转载于:https://www.cnblogs.com/changer-qyz/p/10719824.html

你可能感兴趣的文章
解决phpMyAdmin在nginx+php-fpm模式下无法使用的问题
查看>>
购机玩机完全手册(CPU篇)
查看>>
JDBC连接数据库经验技巧集萃
查看>>
活动目录设计中需要遵循的七个原则
查看>>
浮点数
查看>>
写脚本将CPAN网站上的模块全部下载
查看>>
Python 学习笔记- hashlib模块
查看>>
WCF分布式开发步步为赢(10):请求应答(Request-Reply)、单向操作(One-Way)、回调操作(Call Back)...
查看>>
C# 3.0 新特性:扩展方法初探
查看>>
使用Navicat 导入导出Mysql数据库
查看>>
【.Net Micro Framework PortingKit - 06】设置芯片时钟
查看>>
批处理文件之间的相互调用问题
查看>>
为WP7添加动态Tile
查看>>
【COCOS2DX-LUA 脚本开发之七】解决argument #2 is ‘xx’; ‘CCNode’ expected
查看>>
linux下,安装和管理应用程序
查看>>
LoadRunner特殊函数应用注意事项
查看>>
Linux中无法连网的几个大问题
查看>>
全局与接口的BPDU Guard功能是有重大区别的
查看>>
RAC环境下的备份与恢复(四)
查看>>
WINXP下安装Apache,PHP,MySQL,phpMyAdmin
查看>>