hdu1806——Frequent values
来源:互联网 发布:python 单核可以子进程 编辑:程序博客网 时间:2024/05/22 09:39
You are given a sequence of n integers a1 , a2 , ... , an in non-decreasing order. In addition to that, you are given several queries consisting of indicesi and j (1 ≤ i ≤ j ≤ n). For each query, determine the most frequent value among the integersai , ... , aj.
The input consists of several test cases. Each test case starts with a line containing two integersn and q (1 ≤ n, q ≤ 100000). The next line containsn integers a1 , ... , an (-100000 ≤ ai ≤ 100000, for eachi ∈ {1, ..., n}) separated by spaces. You can assume that for each i ∈ {1, ..., n-1}: ai ≤ ai+1. The followingq lines contain one query each, consisting of two integers i and j (1 ≤ i ≤ j ≤ n), which indicate the boundary indices for the
query.
The last test case is followed by a line containing a single 0.
For each query, print one line with one integer: The number of occurrences of the most frequent value within the given range.
10 3-1 -1 1 1 1 1 3 10 10 102 31 105 100
143
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#define N 100003using namespace std;int dp[N][30],a1[N],a2[N],n;void RMQ(){ int i,j; for(j=1; 1<<j<=n; j++) for(i=1; i+(1<<j)-1<=n; i++) dp[i][j]=max(dp[i][j-1],dp[i+(1<<(j-1))][j-1]);}int main(){ int m,i,a,b; while(scanf("%d",&n),n) { scanf("%d",&m); scanf("%d",&a1[1]); a2[1]=1; dp[1][0]=1; for(i=2; i<=n; i++) { scanf("%d",&a1[i]); if(a1[i]==a1[i-1]) { a2[i]=a2[i-1]+1; dp[i][0]=a2[i]; } else { a2[i]=1; dp[i][0]=1; } } RMQ(); while(m--) { scanf("%d%d",&a,&b); if(a>b) swap(a,b); int sum=0; for(i=a; i<=b; i++) { if(a2[i]==1) break; sum++; } if(i==b+1) printf("%d\n",sum); else { int k=log(b-i+1.0)/log(2.0); printf("%d\n",max(sum,max(dp[i][k],dp[b-(1<<k)+1][k]))); } } } return 0;}
- hdu1806——Frequent values
- HDU1806 Frequent values
- HDU1806 Frequent values
- POJ3368/HDU1806/UVa11235 Frequent Values 游程编码+RMQ
- poj3368——Frequent values
- POJ3368——Frequent values(RMQ)
- poj 3368——Frequent values
- UVA - 11235 —— Frequent values 【RMQ】
- NKOJ1752——Frequent values (运用ST算法)
- BIT&&RMQ——Poj 3368 Frequent values
- Frequent values
- Frequent values
- Frequent values
- POJ 3368—— Frequent values(频繁出现的数值UVA11235) RMQ
- POJ3668——Frequent values(线段树,RMQ,ST表)
- PKU 3368 Frequent values
- POJ 3368 Frequent values
- [RMQ]Pku3368-Frequent values
- 二、实现从一页面跳转到指定模块的位置,并将该模块在主区域中显示出来
- Apache主配置文件httpd.conf 详解
- 文本、input、img在同一行时设置垂直距中
- 关于windows不支持NODE_ENV=development的问题
- “王者荣耀”中的常用英语
- hdu1806——Frequent values
- 完成端口IOCP详解
- [kmp]kmp求字符串中子串的个数
- ajax异步刷新
- Maven实战(maven安装和配置【windows系统】)
- 617. Merge Two Binary Trees(二叉树的合并)
- java RandomAccessFile 类
- window.history.go(-1)返回且刷新页面
- 仿SDCycleScrollView(Swift版本)