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 ...
随机推荐
- 1_archlinux_安装篇
系统安装 可参考网友的文章: https://www.douban.com/note/263375303/?type=like http://www.68idc.cn/help/server/linu ...
- linux修改单个进程的系统时间
简介 如下是 libfaketime 的一个简单实例. 在工作中常常需要测试修改时间,如果环境不允许调整时间,就要想办法调整单个进程的时间了. 编译安装 git clone https://githu ...
- Nginx+vsftpd搭建图片服务器
安装Nginx 参考:http://www.cnblogs.com/idefav2010/p/nginx-concat.html Nginx配置文件 location ~ .*\.(gif|jpg|j ...
- vs asp.net 给所有邮箱发邮件,案例,源代码,c#
//发送邮箱 MailMessage mailObj = new MailMessage(); mailObj.From = new MailAd ...
- Flume在企业大数据仓库架构中位置及功能
Flume在企业大数据仓库架构中位置及功能 hadoop 数据仓库 flume 数据仓库架构 1.如下图所示,外部数据中,关系型数据库导入到HDFS用sqoop,由Nginx产生的文件实时监控用Flu ...
- 6.scala中的包
版权申明:转载请注明出处. 文章来源:http://bigdataer.net/?p=287 排版乱?请移步原文获得更好的阅读体验 1.基础特性 scala中的包和java中的包类似,都是用来在大型工 ...
- 读书笔记: Microsot .NET企业级应用架构设计
Microsot .NET企业级应用架构设计 Dino Esposito Andrea Saltarello 编 陈黎夫 译 人民邮电出版社 第一部分 设计原则 第1章 当代架构师和架构 ...
- python 编程测试练习2
1.将A.txt(多行)文件的内容读取出来写入到B.txt中 2.总结 一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法. 1.得到当前工作目录,即当前Python脚 ...
- codeforces291E Tree-String Problem
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- 多网卡绑定(bond)
通过以下命令查看bond0的工作状态查询能详细的掌握bonding的工作状态,如这个绑定各网卡的工作状态.主备关系.链路侦测时间[root@ASMTS ~]# cat /proc/net/bondin ...