poj 3368 rmq ***
题意:给出n个数和Q个询问(l,r),对于每个询问求出(l,r)之间连续出现次数最多的次数。
- #include<cstdio>
- #include<iostream>
- #include<algorithm>
- #include<cstring>
- #include<cmath>
- #include<queue>
- #include<map>
- using namespace std;
- #define MOD 1000000007
- const int INF=0x3f3f3f3f;
- const double eps=1e-;
- typedef long long ll;
- #define cl(a) memset(a,0,sizeof(a))
- #define ts printf("*****\n");
- int n,m,tt;
- const int MAXN = ;
- int dp[MAXN][];
- int mm[MAXN];
- //初始化RMQ, b数组下标从1开始,从0开始简单修改
- void initRMQ(int n,int b[])
- {
- mm[] = -;
- for(int i = ; i <= n;i++)
- {
- mm[i] = ((i&(i-)) == )?mm[i-]+:mm[i-];
- dp[i][] = b[i];
- }
- for(int j = ; j <= mm[n];j++)
- for(int i = ;i + (<<j) - <= n;i++)
- dp[i][j] = max(dp[i][j-],dp[i+(<<(j-))][j-]);
- }
- //查询最大值
- int rmq(int x,int y)
- {
- int k = mm[y-x+];
- return max(dp[x][k],dp[y-(<<k)+][k]);
- }
- int a[MAXN],f[MAXN];
- int main()
- {
- int i,j,k;
- #ifndef ONLINE_JUDGE
- freopen("1.in","r",stdin);
- #endif
- while(scanf("%d",&n)!=EOF)
- {
- if(n==) break;
- scanf("%d",&m);
- for(i=;i<=n;i++)
- {
- scanf("%d",&a[i]);
- f[]=;
- if(i!=)
- {
- if(a[i]==a[i-])
- {
- f[i]=f[i-]+;
- }
- else
- f[i]=;
- }
- }
- /*for(i=1;i<=n;i++)
- {
- printf("%d ",f[i]);
- }
- printf("\n");*/
- initRMQ(n,f);
- while(m--)
- {
- int uu,v;
- scanf("%d%d",&uu,&v);
- int u=uu;
- while(u<=v&&a[u]==a[u-])
- {
- u++;
- }
- int ans=rmq(u,v);
- ans=max(u-uu,ans);
- printf("%d\n",ans);
- }
- }
- }
poj 3368 rmq ***的更多相关文章
- POJ 3368/RMQ/线段数
题目链接 /* 给出一段序列,询问[L,R]区间内最大相同数的个数. 用一个很巧妙地方法,转化成求区间内的最大值的问题. RMQ维护区间最大值. MAX处理: */ for(int i=1;i< ...
- poj 3368(RMQ模板)
题目链接:http://poj.org/problem?id=3368 题意:给出n个数和Q个询问(l,r),对于每个询问求出(l,r)之间连续出现次数最多的次数. 求解RMQ问题的算法有:搜索(比较 ...
- poj 3368 Frequent values(RMQ)
/************************************************************ 题目: Frequent values(poj 3368) 链接: http ...
- POJ 3368 RMQ-ST
一直感觉RMQ水,没自己写过,今天写了一道题,算是完全独立写的,这感觉好久没有了... 一直以来,都是为了亚洲赛学算法,出现了几个问题: 1.学的其实只是怎么用算法,对算法的正确性没有好好理解,或者说 ...
- POJ 3368 & UVA 11235 - Frequent values
题目链接:http://poj.org/problem?id=3368 RMQ应用题. 解题思路参考:http://blog.csdn.net/libin56842/article/details/4 ...
- poj 3368 Frequent values(RMQ)
题目:http://poj.org/problem?id=3368 题意:给定n个数,顺序为非下降,询问某个区间内的数出现最多的数的 出现次数.. 大白书上的 例题..算是RMQ变形了, 对 原数组重 ...
- POJ 3368 Frequent values (基础RMQ)
Frequent values Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 14742 Accepted: 5354 ...
- POJ 3368 Frequent values 【ST表RMQ 维护区间频率最大值】
传送门:http://poj.org/problem?id=3368 Frequent values Time Limit: 2000MS Memory Limit: 65536K Total S ...
- POJ 3368 Frequent values(RMQ 求区间出现最多次数的数字的次数)
题目链接:http://poj.org/problem? id=3368 Description You are given a sequence of n integers a1 , a2 , .. ...
随机推荐
- json字符串和Json对象,以及json的基本了解
考虑到python等语言中没有更好表示json对象的方法,所以使用JavaScript来介绍json 首先是json字符串: var str1 = '{ "name": " ...
- Linux-Xshell会话保持
1.Xshell客户端设置 2.服务端设置 修改/etc/ssh/sshd_config文件,找到 ClientAliveInterval 0和ClientAliveCountMax 3并将注释符号( ...
- SQL记录-PLSQL事务
PL/SQL事务 数据库事务是一个工作的原子单元,其可以由一个或多个相关的SQL语句组成.所谓的原子性就是数据库的修改所带来的构成事务的SQL语句可以集体被提交,即永久到数据库或从数据库中(撤消) ...
- Dubbo学习笔记4:服务消费端泛化调用与异步调用
本文借用dubbo.learn的Dubbo API方式来解释原理. 服务消费端泛化调用 前面我们讲解到,基于Spring和基于Dubbo API方式搭建简单的分布式系统时,服务消费端引入了一个SDK二 ...
- 使用 maven 搭建web开发基本架构
我觉得可能,对于还没有使用过 IDEA 进行开发的童鞋来说,直接撸代码是有些尴尬的.那么我会把示例代码之前的那些事再在这里写一遍 按图步骤进行即可进行基本项目结构搭建 现在基本流行 maven 管理项 ...
- SCI写作经典替换词
- [原]Android开发优化-Adapter优化
ListView作为Android开发中使用频率最高的一个控件,保证ListView的流畅运行,对用户体验的提高至关重要.Adapter是ListView和数据源之间的中间人,当每条数据进入可见区时, ...
- HDU 4506 小明系列故事——师兄帮帮忙(二分快速幂)
题意:就是输入一个数组,这个数组在不断滚动,而且每滚动一次后都要乘以一个数,用公式来说就是a[i] = a[i-1] * k;然后最后一位的滚动到第一位去. 解题报告:因为题目中的k要乘很多次,达到了 ...
- 第5月第10天 node.js的request模块
1.node.js的request模块 http://www.cnblogs.com/meteoric_cry/archive/2012/08/18/2645530.html
- RabbitMQ集群下队列存放消息的问题
RabbitMQ中队列有两种模式 1.默认 Default 2.镜像 Mirror [类似于mongoDB,从一直在通过主的操作日志来进行同步] *如果将队列定义为镜像模式,那么这个队列也将区分主从, ...