题库链接:

https://nanti.jisuanke.com/t/41387

题目大意

给定n个数,与一个数m,求ai右边最后一个至少比ai大m的数与这个数之间有多少个数

思路

对于每一个数,利用二分的方法求他右边大于等于ai+m的数的最后一个值。

关键在于怎么二分呢?

利用线段树存储区间最大值,看这个区间的最大值是不是比ai+m大

代码:

#include<bits/stdc++.h>
using namespace std;
#define maxn 1000005
#define mod 1000000007
int a[maxn];
struct node
{int l,r,ma;
}tree[maxn*4];
void build(int l,int r,int p)
{tree[p].l = l;tree[p].r = r;tree[p].ma = -1;if(l == r){tree[p].ma = a[l];return;}int mid = (l+r)/2;build(l,mid,p*2);build(mid+1,r,p*2+1);tree[p].ma = max(tree[p*2].ma,tree[p*2+1].ma);
}
int query(int x,int y,int p)
{if(x == tree[p].l && y == tree[p].r)return tree[p].ma;int mid = (tree[p].l + tree[p].r)/2;if(x > mid)return query(x,y,p*2+1);else if(y <= mid)return query(x,y,p*2);elsereturn max(query(x,mid,p*2),query(mid+1,y,p*2+1));}
int main()
{int T,i,j,k,n,q,x,y,m,s,l,r,mid;scanf("%d%d",&n,&m);for(i=1;i<=n;++i)scanf("%d",&a[i]);build(1,n,1);for(i=1;i<n;i++){s=m+a[i];l=i+1;r=n;while(l<r){mid=(l+r+1)/2;if(query(mid,r,1)>=s){l=mid;}else if(query(l,mid,1)>=s){r=mid-1;}else {break;}}if(a[l]>=s)cout<<l-i-1<<' ';elsecout<<"-1"<<' ';}cout<<"-1"<<endl;return 0;
}

转载于:https://www.cnblogs.com/dyhaohaoxuexi/p/11484004.html

2019 徐州icpc网络赛 E. XKC's basketball team相关推荐

  1. [The Preliminary Contest for ICPC Asia Xuzhou 2019 - 徐州网络赛E] XKC's basketball team

    XKC's basketball team XKC , the captain of the basketball team , is directing a train of nn team mem ...

  2. so easy(2019徐州icpc网络赛B)

    题目链接:题目链接 当时这个题卡了好久,用了两个map一直超时. 一直想用并查集,但是一直想不出来怎么用.赛后问的lzh大佬才知道的. map+并查集. 1操作的时候,就把这个值的map设置为x+1. ...

  3. XKC's basketball team(2019徐州站网络赛E线段树)

    题目链接:题目链接嘤嘤嘤 一开始以为是主席树,想明白了之后线段树就可以.从后往前遍历,线段树二分查找离这个数最远的数字.返回那个数的下标.这个数查找完了就把这个数插入到线段树里. 代码如下: #inc ...

  4. New Year and Old Subsequence CodeForces - 750E(线段树+矩阵dp)2019南昌icpc网络赛Hello 2019

    A string t is called nice if a string "2017" occurs in t as a subsequence but a string &qu ...

  5. Factories Gym - 102222G(2018宁夏邀请赛暨2019银川icpc网络预选赛)

    第一场icpc网络赛,出的去年宁夏邀请赛原题.c题还没有读完就有ak的了..(滑稽) Byteland has nn cities numbered from 11 to nn, and n−1n−1 ...

  6. ICPC网络赛第二场G Limit

    ICPC网络赛第二场G Limit 题意: 给你数组a和b,求解: 1≤n≤100000,−100≤ai,bi≤100,0≤t≤5.1≤n≤100000,−100≤a_{i},b_{i}≤100,0≤ ...

  7. icpc网络赛第二场K Meal

    icpc网络赛第二场K Meal 题意: 有n个人,n个菜, 现在n个人轮流吃菜,起初S中有n个菜,第i个人会在还没拿走的菜中随机选一个,拿走第j个菜的概率为ai,j∑k∈Sai,k\frac{a_{ ...

  8. J Red-Black Paths(ICPC网络赛第一场)

    J Red-Black Paths(ICPC网络赛第一场) 题意: 有n个点,m次操作,有三种操作: 1 u v:从u向v建一个有向边 2 u:将点u染成红色 3 u: 将点u染成黑色 4 查询最新生 ...

  9. 2018ACM-ICPC徐州赛区网络赛: A. Hard to prepare(递推)

    2018ACM-ICPC徐州赛区网络赛: A. Hard to prepare(递推) After Incident, a feast is usually held in Hakurei Shrin ...

最新文章

  1. C语言网络编程:TCP实现多线程实现多客户端
  2. “艾妮”(ANI)蠕虫病毒
  3. H3C RIPv2配置任务
  4. SpringMVC RequestMapping注解详解
  5. [转载] Win7下MATLAB 7.0下载地址和详细安装
  6. 索尼a5100_索尼相机分类,买相机不再发愁
  7. java判断端口是否可用
  8. 严蔚敏数据结构之线性表的基本操作
  9. 前端面试总结--数据结构与算法五
  10. 大学生 大创 软著申请指南(图文含模板)(专用于大创,这篇就够了!纯干货!)
  11. 2分钟学会小程序中使用vant组件库
  12. LabVIEW编程规范
  13. Linux之软件包安装——06
  14. 博客已死?移动互联网时代博客的价值
  15. C++程序设计(六)—— 继承和派生
  16. leetcode day 2 【1905. 统计子岛屿】 BFS/DFS
  17. 看得见风和日丽,看不见风起“云”涌
  18. python图书馆管理系统实验报告_基于python图书馆管理系统设计实例详解
  19. jsp如何使用layerui
  20. 关于SIP服务器opensips和Asterisk比较的好文章

热门文章

  1. java学习(146):file常用方法3
  2. Vue之$nextTick属性
  3. eureka需要替换吗_nacos无缝替换eureka
  4. 数据共享如何改变世界_如何改变他人?“我不会去改变这个世界,我们会去改变自己”。...
  5. RabbitMQ基本概念(三)-Centos7下安装RabbitMQ3.6.1
  6. localStorage和sessionStorage的简单使用
  7. 今天刚开通博客,很开心
  8. Java中String为什么是final
  9. 【SIGGRAPH 2015】【巫师3 狂猎 The Witcher 3: Wild Hunt 】顶级的开放世界游戏的实现技术。...
  10. 复合索引字段的排序对搜素的影响