hdu5289 RMQ+二分
RMQ预处理最大值,最小值,然后对于每一点,二分可能满足的区间长度,长度-1就是该店开始的区间满足的个数。
#include<stdio.h>
#include<string.h>
#include<math.h>
#define maxn 100010
#define LL __int64
int dp1[maxn][],n,a[maxn],dp2[maxn][];
int min(int x,int y)
{return x<y?x:y;}
int max(int x,int y)
{return x>y?x:y;}
void rmq()
{
int i,j;
for(i=;i<=n;i++)
{
dp1[i][]=a[i];
dp2[i][]=a[i];
}
for(j=;j<=;j++)
{
for(i=;i+(<<j)-<=n;i++)
{
dp1[i][j]=min(dp1[i][j-],dp1[i+(<<(j-))][j-]);
dp2[i][j]=max(dp2[i][j-],dp2[i+(<<(j-))][j-]);
}
}
}
int ok(int m,int l,int k)
{
int r=l+m-;
int t=(int)(log(m*1.0)/log(2.0));
int minnum=min(dp1[l][t],dp1[r-(<<t)+][t]);
int maxnum=max(dp2[l][t],dp2[r-(<<t)+][t]);
if(maxnum-minnum<k)
return ;
return ;
}
int main()
{
int t,i,j,k;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&k);
for(i=;i<=n;i++)
scanf("%d",&a[i]);
rmq();
LL ans=;
for(i=;i<=n;i++)
{
int l=,r=n-i+,m;//枚举长度
while(l<=r){
m=(l+r)>>;
if(ok(m,i,k))
{
l=m+;
}
else r=m-;
}
ans+=l-;
}
printf("%I64d\n",ans);
}
}
hdu5289 RMQ+二分的更多相关文章
- *HDU3486 RMQ+二分
Interviewe Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- cf689d ST表RMQ+二分
类似hdu5289,但是二分更复杂.本题枚举左端点,右端点是一个区间,需要二分找到区间的左端点和右端点(自己手动模拟一次),然后区间长度就是结果增加的次数 另外结果开long long 保存 /** ...
- hdu 5289 Assignment(2015多校第一场第2题)RMQ+二分(或者multiset模拟过程)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5289 题意:给你n个数和k,求有多少的区间使得区间内部任意两个数的差值小于k,输出符合要求的区间个数 ...
- hdu 3486 Interviewe (RMQ+二分)
Interviewe Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- 【bzoj2500】幸福的道路 树形dp+倍增RMQ+二分
原文地址:http://www.cnblogs.com/GXZlegend/p/6825389.html 题目描述 小T与小L终于决定走在一起,他们不想浪费在一起的每一分每一秒,所以他们决定每天早上一 ...
- HDU 5089 Assignment(rmq+二分 或 单调队列)
Assignment Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total ...
- 玲珑杯 Round 19 B Buildings (RMQ + 二分)
DESCRIPTION There are nn buildings lined up, and the height of the ii-th house is hihi. An inteval [ ...
- codeforces 487B B. Strip(RMQ+二分+dp)
题目链接: B. Strip time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- CodeForces 689D Friends and Subsequences (RMQ+二分)
Friends and Subsequences 题目链接: http://acm.hust.edu.cn/vjudge/contest/121333#problem/H Description Mi ...
随机推荐
- 逻辑备份(mysqldump/select into outfile)
#mysqldump备份 shell> mysqldump -uroot -p -P4306 sakila actor>E:\sakila-actor.sql shell> mysq ...
- JobTracker与TaskTracker的关系
JobTracker 对应于 NameNode TaskTracker 对应于 DataNode DataNode 和NameNode 是针对数据存放来而言的 JobTracker和TaskTrac ...
- MyBatis框架的文件配置
第一步:log4j.properties的配置 原因:Mybatis的日志输出是依赖与log4j的,所以必须要配置 # Global logging configuration log4j.rootL ...
- [Array]628. Maximum Product of Three Numbers
Given an integer array, find three numbers whose product is maximum and output the maximum product. ...
- 生成中国地区随机IP
#随机生成IP 中国区 public function randip($member){ if($member['user_ip']){ if($member ...
- for循环遍历json(附习题及答案)
三种方法 var mapColumn = { "vdoing" : "访问深度", "_visitorNumber": "访问量& ...
- vue单页应用中,使用setInterval()定时向服务器获取数据,后来跳转页面后,发现还在不停的获取数据。
使用VUE开发单页项目时遇到这样的问题,mounted中使用setInterval()定时向服务器获取数据,后来跳转页面后,发现还在不停的获取数据.我以为是因为我路由用的push导致的,改成repla ...
- 沙雕去死吧! 劳资终于弄好了toimcat9 apt和ssl配置
搜一下吧,要不就是不用apr模式,也不用nio模式,直接用bio模式跑的,麻烦问一下,您们都是傻屌吗? APR模式必须要用!!!!! 然后全他妈的用jks证书,然后再提取公钥*.cer,然后再转换为* ...
- description The request sent by the client was syntactically incorrect.
shi用url传递参数,其他页面都ojbk的 唯独有一个请求 不应该啊 这明显的已经配置好了啊 因为别的请求我也是这样配置的啊,运行是没问题的啊 运行好好的啊 一时间,感觉无从下手了 经过十几分钟各种 ...
- win7关闭休眠功能,清除Hiberfil.sys
电脑使用的ssd,本身容量就比较小. 用管理员身份打开命令提示符, 命令窗口中输入: powercfg -h off 即可关闭休眠功能,同时 Hiberfil.sys 文件也会自动删除.