HDU 5289——Assignment——————【RMQ+优化求解】
Assignment
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 902 Accepted Submission(s): 441
4 2
3 1 2 4
10 5
0 3 4 5 2 1 6 7 8 9
28
First Sample, the satisfied groups include:[1,1]、[2,2]、[3,3]、[4,4] 、[2,3]
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define INT long long
const int maxn=1e5+20;
int d[maxn][50];
int dp[maxn][50];
int A[maxn];
int Abs(int x){
return x<0? -x:x;
}
void RMQ_init(int n){//RMQ维护出区间i,j之间的最大最小值。
for(int i=0;i<n;i++){
d[i][0]=A[i];
dp[i][0]=A[i];
}
for(int j=1;(1<<j)<=n;j++){
for(int i=0;i+(1<<j)-1<n;i++){
d[i][j]=min(d[i][j-1],d[i+(1<<(j-1))][j-1]);
dp[i][j]=max(dp[i][j-1],dp[i+(1<<(j-1))][j-1]);
}
}
}
int RMQ(int L,int R,int typ){
int k=0;
while((1<<(k+1)<=R-L+1))
k++;
if(typ==0)
return min(d[L][k],d[R-(1<<k)+1][k]);
else
return max(dp[L][k],dp[R-(1<<k)+1][k]);
}
int main(){
int t,i,j,k,n,tmp,ret,itvlav,itvliv,sum,flag;
INT res,ans;
scanf("%d",&t);
while(t--){
memset(dp,0,sizeof(dp));
memset(d,0,sizeof(d));
memset(A,0,sizeof(A));
scanf("%d%d",&n,&k);
for(i=0;i<n;i++){
scanf("%d",&A[i]);
}
RMQ_init(n);
tmp=0,res=0,sum=0;
itvlav=itvliv=A[0];
for(i=0;i<n;i++){
flag=0;
for(j=tmp;j<n;j++){
if(Abs(itvlav-A[j])<k&&Abs(itvliv-A[j])<k){//右区间能向右扩展
tmp=j+1;
itvlav=RMQ(i,j,1);
itvliv=RMQ(i,j,0);
res++;
}else{ //右区间现在无法扩展,向右移动左区间位置,看新的区间是否能向右扩展
flag=1;
tmp=j;
itvlav=RMQ(i+1,j-1,1);
itvliv=RMQ(i+1,j-1,0);
break;
}
}
sum+=res;
res--;
if(flag==1){
if(res==0){
itvlav=itvliv=A[tmp];
}
} }
printf("%lld\n",sum);
}
return 0;
}
HDU 5289——Assignment——————【RMQ+优化求解】的更多相关文章
- HDU 5289 Assignment rmq
Assignment 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5289 Description Tom owns a company and h ...
- HDU - 5289 Assignment (RMQ+二分)(单调队列)
题目链接: Assignment 题意: 给出一个数列,问其中存在多少连续子序列,使得子序列的最大值-最小值<k. 题解: RMQ先处理出每个区间的最大值和最小值(复杂度为:n×logn),相 ...
- HDU 5289 Assignment [优先队列 贪心]
HDU 5289 - Assignment http://acm.hdu.edu.cn/showproblem.php?pid=5289 Tom owns a company and he is th ...
- HDU 5289 Assignment(二分+RMQ-ST)
Assignment Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total ...
- hdu 5289 Assignment(2015多校第一场第2题)RMQ+二分(或者multiset模拟过程)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5289 题意:给你n个数和k,求有多少的区间使得区间内部任意两个数的差值小于k,输出符合要求的区间个数 ...
- HDU 5289 Assignment(多校2015 RMQ 单调(双端)队列)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5289 Problem Description Tom owns a company and he is ...
- HDU 5289 Assignment(2015 多校第一场二分 + RMQ)
Assignment Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total ...
- ACM学习历程—HDU 5289 Assignment(线段树 || RMQ || 单调队列)
Problem Description Tom owns a company and he is the boss. There are n staffs which are numbered fro ...
- HDU 5289 Assignment (ST算法区间最值+二分)
题目链接:pid=5289">http://acm.hdu.edu.cn/showproblem.php?pid=5289 题面: Assignment Time Limit: 400 ...
随机推荐
- vs更改项目文件夹名称
改完之后会提示找不到.csproj,用文档工具打开.sln文件,把里面找.csproj的路径修改一下就好了
- CentOS6 系统下升级python后yum命令使用时报错
CentOS6 系统下升级python后yum命令使用时报错,如下: [root@xxxxxxx]#yumFile"/usr/bin/yum",line30exceptKeyboa ...
- 最短路径 Dijkstra算法 AND Floyd算法
无权单源最短路:直接广搜 void Unweighted ( vertex s) { queue <int> Q; Q.push( S ); while( !Q.empty() ) { V ...
- 洛谷 P2330 [SCOI2005]繁忙的都市(最小生成树)
嗯... 题目链接:https://www.luogu.org/problemnew/show/P2330 这道题的问法也实在是太模板了吧: 1.改造的道路越少越好 2.能够把所有的交叉路口直接或间接 ...
- MVC5 + EF6 入门完整教程1
https://www.cnblogs.com/miro/p/4030622.html 第0课 从0开始 ASP.NET MVC开发模式和传统的WebForm开发模式相比,增加了很多"约定& ...
- kotlin spring mvc request json 请求
// json 代码{ /*用户信息*/ user: { username: '{$user.username}', headImg: '{$user.headImg}', targetId: '{$ ...
- JAVA数据结构--插入排序
插入排序(英语:Insertion Sort)是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入.插入排序在实现上,通常采用in- ...
- Training set,Gallery set 和Probe set的区别
这段时间看了CVPR2017的这篇论文”SphereFace:Deep Hypersphere Embedding for Face Recognition" 里面有提到Probe set, ...
- Chapter 6
6.1 顶点与输入布局 Direct3D 的顶点可以包含除空间坐标外的其他数据.如: struct Vertex1 { XMFLOAT3 Pos; XMFLOAT4 Color; }; struct ...
- [转] Kubernetes集群安装文档-v1.6版本
[From] https://www.kubernetes.org.cn/1870.html http://jimmysong.io/kubernetes-handbook