HDU 1806
http://acm.hdu.edu.cn/showproblem.php?pid=1806
非常玄妙的rmq问题,这个st算法有点神
#include <iostream>
#include <cmath>
using namespace std ;
int dp[][] ;
int a[],b[] ;
void makermq(int n,int *tt)
{
for(int i= ;i<n ;i++)
dp[i][]=tt[i] ;
for(int j= ;(<<j)<=n ;j++)
for(int i= ;i+(<<j)-<n ;i++)
dp[i][j]=max(dp[i][j-],dp[i+(<<(j-))][j-]) ;
}
int rmq(int l,int r)
{
int k=(int)(log((r-l+)*1.0)/log()) ;
return max(dp[l][k],dp[r-(<<k)+][k]) ;
}
int bs(int l,int r)
{
int temp=a[r] ;
while(l<r)
{
int mid=(l+r)>> ;
if(a[mid]>temp)
r=mid- ;
else if(a[mid]<temp)
l=mid+ ;
else
r=mid ;
}
return r ;
}
int main()
{
int n,q ;
while(~scanf("%d",&n),n)
{
scanf("%d",&q) ;
for(int i= ;i<n ;i++)
scanf("%d",&a[i]) ;
int cnt ;
for(int i=n- ;i>= ;i--)
{
if(i==n-)
cnt= ;
else
{
if(a[i]==a[i+])
cnt++ ;
else
cnt= ;
}
b[i]=cnt ;
}
makermq(n,b) ;
while(q--)
{
int l,r ;
scanf("%d%d",&l,&r) ;
l-- ;r-- ;
int temp=bs(l,r) ;
int ans=r-temp+ ;
r=temp- ;
if(l>r)
printf("%d\n",ans) ;
else
printf("%d\n",max(ans,rmq(l,r))) ;
}
}
return ;
}
HDU 1806的更多相关文章
- hdu 1806 rmq
找到一个区间内出现最多的数的次数 10 3 //10个数字三次询问 -1 -1 1 1 1 1 3 10 10 10 2 3 1 10 5 10 0 143 #include<cstdio> ...
- [HDU 1806] Frequent values
Frequent values Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- hdu 1806 Frequent values 线段树
题目链接 给一个非递减数列, n个数, m个询问, 每个询问给出区间[L, R], 求这个区间里面出现次数最多的数的次数. 非递减数列, 这是最关键的一个条件... 需要保存一个区间最左边的数, 最右 ...
- hdu 1806(线段树区间合并)
Frequent values Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- HDU——PKU题目分类
HDU 模拟题, 枚举1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 ...
- HDU 5643 King's Game 打表
King's Game 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5643 Description In order to remember hi ...
- poj 1806 Frequent values(RMQ 统计次数) 详细讲解
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1806 题目大意:给你一个非降序排列的整数数组,你的任务是对于一系列的询问,(i,j),回答序列中出现次 ...
- HDOJ 2111. Saving HDU 贪心 结构体排序
Saving HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 【HDU 3037】Saving Beans Lucas定理模板
http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...
随机推荐
- 临时变量不能作为非const引用
转自:http://blog.csdn.net/u011068702/article/details/64443949 1.看代码 2.编译结果 3.分析和解决 就拿f(a + b)来说,a+b的值会 ...
- Oracle SQL Developer 编辑区不能删除,后退,空格,复制粘贴等功能都失效的解决办法
Oracle SQL Developer 编辑区不能删除,后退,空格,复制粘贴等功能都失效的解决办法 解决: 打开菜单并选择Tools-prefrence-Accelerators-Load Pres ...
- nginx的坑-org.apache.http.TruncatedChunkException: Truncated chunk( expected size: 7752; actual size: 4077)
org.apache.http.TruncatedChunkException: Truncated chunk 项目中使用请求远程接口报错 ,项目是Spring-boot的,两个项目(A和B) , ...
- java高级特性(2)--循序渐进地培养面向对象的思维方式
在我踏入软件行业后,一直苦于没有前辈指点.我常年困惑于两个问题:一是怎样培养面向对象设计的思维能力?二是怎样进行架构设计,有无方法? 因为我做了那么多年项目,却很少看到有漂亮的面向对象思维写出来的代码 ...
- Vuex最基本样例
通过vue-cli建立基本脚手架(需要安装vuex),需要新建一个store.js文件.基本目录如下 1,store.js文件代码: import Vue from 'vue' import Vuex ...
- vue element new vue const
new Vue{ el:"app", } ========= const app = new Vue({ router, data:{....} }).$mount('#app') ...
- Java线程池可用的队列
Java线程池ThreadPoolExecutor的构造器: public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long ...
- Jenkins的安装和使用
1.可以参考W3C----https://www.w3cschool.cn/jenkins/jenkins-5h3228n2.html 两种方式安装Jenkins a.安装包 b.Jenkins.wa ...
- jmeter-00 JMeter 运行过程
一.GUI mode 图形化界面运行 to run JMeter, run the jmeter.bat (for Windows) or jmeter (for Unix) file. These ...
- 16.并发容器之CopyOnWriteArrayList
1. CopyOnWriteArrayList的简介 java学习者都清楚ArrayList并不是线程安全的,在读线程在读取ArrayList的时候如果有写线程在写数据的时候,基于fast-fail机 ...