一句话,多次查询区间的众数的次数

注意多组数据!!!!

RMQ方法:

预处理 i 及其之前相同的数的个数

再倒着预处理出 i 到不是与 a[i] 相等的位置之前的一个位置, 查询时分成相同的一段和不同的一段 (RMQ)

但是要注意 to[i] 大于查询范围的情况, 以及RMQ时 x < y 的情况!!

AC代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<vector>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<string>
#include<iomanip>
#include<ctime>
#include<climits>
#include<cctype>
#include<algorithm>
#ifdef WIN32
#define AUTO "%I64d"
#else
#define AUTO "%lld"
#endif
using namespace std;
const int INF=0x3f3f3f3f;
const int maxn=;
const int maxd=;
int n,q;
int a[maxn];
int sum[maxn];
int to[maxn];
inline bool init()
{
if(!~scanf("%d%d",&n,&q) || !n) return false;
for(int i=;i<=n;i++) scanf("%d",a+i);
sum[]=;
for(int i=;i<=n;i++)
if(a[i-]^a[i]) sum[i]=;
else sum[i]=sum[i-]+;
to[n]=n;
for(int i=n-;i;i--)
to[i] = a[i]^a[i+]? i : to[i+];
return true;
}
int dp[maxn][maxd];
void ST()
{
for(int i=;i<=n;i++) dp[i][] = sum[i];
int k=;
while( (<<k+) <= n ) k++;
for(int j=;j<=k;j++)
for(int i=;i+(<<j)-<=n;i++)
dp[i][j] = max( dp[i][j-] , dp[i+(<<j-)][j-] ); // j-1 moved !!!
}
inline int RMQ(int x,int y)
{
if (x>y) return -INF; // INF here to make the case extinct!!
int k=;
while( (<<k+) <= (y-x+) ) k++;
return max(dp[x][k] , dp[y-(<<k)+][k]);
}
int main()
{
freopen("fre.in","r",stdin);
freopen("fre.out","w",stdout);
while(init())
{
ST();
for(int i=;i<=q;i++)
{
int x,y;
scanf("%d%d",&x,&y);
printf("%d\n",max(sum[min(to[x],y)]-sum[x]+ , RMQ(to[x]+,y)));
}
}
return ;
}

线段树方法:

不急,懒得写了。。

[RMQ] [线段树] POJ 3368 Frequent Values的更多相关文章

  1. POJ 3368 Frequent values RMQ ST算法/线段树

                                                         Frequent values Time Limit: 2000MS   Memory Lim ...

  2. POJ 3368 Frequent values 【ST表RMQ 维护区间频率最大值】

    传送门:http://poj.org/problem?id=3368 Frequent values Time Limit: 2000MS   Memory Limit: 65536K Total S ...

  3. POJ 3368 Frequent values 线段树与RMQ解法

    题意:给出n个数的非递减序列,进行q次查询.每次查询给出两个数a,b,求出第a个数到第b个数之间数字的最大频数. 如序列:-1 -1 1 1 1 1 2 2 3 第2个数到第5个数之间出现次数最多的是 ...

  4. poj 3368 Frequent values(RMQ)

    /************************************************************ 题目: Frequent values(poj 3368) 链接: http ...

  5. POJ 3368 Frequent values (基础RMQ)

    Frequent values Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 14742   Accepted: 5354 ...

  6. poj 3368 Frequent values(段树)

    Frequent values Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 13516   Accepted: 4971 ...

  7. poj 3368 Frequent values -Sparse-Table

    Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 16537   Accepted: 5981 Description You ...

  8. Poj 3368 Frequent values

    /* 线段树区间合并 维护几个信息 到时候乱搞一下就好了 开始T了 有一种情况可以不用递归 直接算出来 */ #include<iostream> #include<cstdio&g ...

  9. POJ 3368 Frequent values(线段树区间合并)

    [题目链接] http://poj.org/problem?id=3368 [题目大意] 有一个有序序列,要求区间查询出现次数最多的数 [题解] 维护每个区间左端点和右端点,以及左右的长度,还有区间的 ...

随机推荐

  1. C#操作sql通用类 SQLHelper

    Codeusing System; using System.Data; using System.Configuration; using System.Web; using System.Web. ...

  2. JS单词形式的运算符

    1.void 运算表达式并忽略其返回值,比如void (1+2),void (0) <html> <head> <meta http-equiv="conten ...

  3. PHP流程控制(二)

    布尔型循环就是为真的时候执行,为假的时候停止 注意:1.循环能够节约大量的代码,提高重用性质2.循环,一定要有退出条件.3.While循环中,在while循环之前必须对变量进行初始化; 单层循环:语法 ...

  4. iOS开发-表视图的使用

    // // ViewController.m // Simple Table // // Created by Jierism on 16/7/20. // Copyright © 2016年 Jie ...

  5. asp.net中application,cookies,stateview,session的使用

    Cookie Cookie的用法也和ASP中差不多.比如我们建立一个名为aspcn,值为飞刀的cookie HttpCookie cookie = new HttpCookie["aspcn ...

  6. 逗号分隔字符串转换为一张表--解决查询in(逗号分隔字符串)出错问题

    CREATE PROCEDURE [dbo].[Pro_TEST] AS BEGIN ) ) SET @split=',' SET @c='025,023,014,015' )) ) BEGIN IN ...

  7. 已超过了锁请求超时时段。 (Microsoft SQL Server,错误: 1222)

    操作SQLServer数据库时.遇到这种问题:已超过了锁请求超时时段. (Microsoft SQL Server,错误: 1222) 经过查找材料了解为资源抢占,照成死锁,杀死进程就OK了.详细操作 ...

  8. android134 360 07 归属地查询

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  9. Gaussian Discriminant Analysis

    如果在我们的分类问题中,输入特征$x$是连续型随机变量,高斯判别模型(Gaussian Discriminant Analysis,GDA)就可以派上用场了. 以二分类问题为例进行说明,模型建立如下: ...

  10. win7为鼠标右键添加“用Photoshop编辑”选项

    1. 确认你注册表编辑器下,HKEY_CLASSES_ROOT\Applications\Photoshop.exe下的shell下的open下的command的右侧默认键值为 "D:\Ad ...