The Preliminary Contest for ICPC Asia Xuzhou 2019 E. XKC's basketball team (线段树)
题目链接:https://nanti.jisuanke.com/t/41387
题目大意:对于给定序列,求出对于每个位置求出比该数大于m的最靠右的位置。
思路:首先对序列进行离散化,然后对于每个数的下标更新到线段树上,然后对于每个位置的数考虑,二分查找比该数大于m的第一个位置到最右端,查找下标的最大值即可。
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e6+;
int n,m;
int w[maxn],x[maxn],Max[maxn<<],ans[maxn];
void pushup(int rt){Max[rt]=max(Max[rt<<],Max[rt<<|]);}
void update(int pos,int val,int l,int r,int rt){
if(l==r){
Max[rt]=val;
return;
}
int mid=(l+r)>>;
if(pos<=mid) update(pos,val,l,mid,rt<<);
else update(pos,val,mid+,r,rt<<|);
pushup(rt);
}
int query(int L,int R,int l,int r,int rt){
if(L<=l&&R>=r){
return Max[rt];
}
int ans=,mid=(l+r)>>;
if(mid>=L) ans=max(ans,query(L,R,l,mid,rt<<));
if(mid<=R) ans=max(ans,query(L,R,mid+,r,rt<<|));
return ans;
} int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++) {
scanf("%d",&w[i]);
x[i]=w[i];
}
sort(x+,x+n+);
int len=unique(x+,x++n)-x-;
for(int i=;i<=n;i++){
int pos=lower_bound(x+,x++len,w[i])-x;
update(pos,i,,len,);
}
for(int i=;i<=n;i++){
int pos=lower_bound(x+,x++len,w[i]+m)-x;
ans[i]=query(pos,len,,len,)-i-;;
if(ans[i]<)ans[i]=-;
}
printf("%d",ans[]);
for(int i=;i<=n;i++)
printf(" %d",ans[i]);
printf("\n");
return ;
}
The Preliminary Contest for ICPC Asia Xuzhou 2019 E. XKC's basketball team (线段树)的更多相关文章
- The Preliminary Contest for ICPC Asia Xuzhou 2019 E XKC's basketball team [单调栈上二分]
也许更好的阅读体验 \(\mathcal{Description}\) 给n个数,与一个数m,求\(a_i\)右边最后一个至少比\(a_i\)大\(m\)的数与这个数之间有多少个数 \(2\leq n ...
- The Preliminary Contest for ICPC Asia Xuzhou 2019 E. XKC's basketball team
题目链接:https://nanti.jisuanke.com/t/41387 思路:我们需要从后往前维护一个递增的序列. 因为:我们要的是wi + m <= wj,j要取最大,即离i最远的那个 ...
- The Preliminary Contest for ICPC Asia Xuzhou 2019 E XKC's basketball team(排序+二分)
这题其实就是瞎搞,稍微想一想改一改就能过. 排序按值的大小排序,之后从后向前更新node节点的loc值,如果后一个节点的loc大于(不会等于)前一个节点的loc,就把前一个节点的loc值设置为后面的l ...
- 计蒜客 41391.query-二维偏序+树状数组(预处理出来满足情况的gcd) (The Preliminary Contest for ICPC Asia Xuzhou 2019 I.) 2019年徐州网络赛)
query Given a permutation pp of length nn, you are asked to answer mm queries, each query can be rep ...
- The Preliminary Contest for ICPC Asia Xuzhou 2019
A:Who is better? 题目链接:https://nanti.jisuanke.com/t/41383 题意: 类似于有N个石子,先手第一次不能拿完,每次后手只能拿 1 到 前一次拿的数量* ...
- 计蒜客 41387.XKC's basketball team-线段树(区间查找大于等于x的最靠右的位置) (The Preliminary Contest for ICPC Asia Xuzhou 2019 E.) 2019年徐州网络赛
XKC's basketball team XKC , the captain of the basketball team , is directing a train of nn team mem ...
- The Preliminary Contest for ICPC Asia Xuzhou 2019 【 题目:so easy】{并查集维护一个数的下一个没有被删掉的数} 补题ING
题意:给[1,n],n个数,有两种操作: 1 x,删去x2 x,查询还未被删去的数中大于等于x的最小的数是多少. input: output: 做法:按照并查集的方法压缩路径 代码: #include ...
- G.Colorful String(The Preliminary Contest for ICPC Asia Xuzhou 2019)
https://nanti.jisuanke.com/t/4 #include <bits/stdc++.h> using namespace std; ,; typedef unsign ...
- E.XKC's basketball team(The Preliminary Contest for ICPC Asia Xuzhou 2019)
https://nanti.jisuanke.com/t/41387 解: 离散化+线段树. #define IOS ios_base::sync_with_stdio(0); cin.tie(0); ...
随机推荐
- win10笔记本设置管理员权限
1.在右下方任务栏的“搜索web和windows”输入框中输入“gpedit.msc”,电脑会自行搜索,搜索完毕之后鼠标点击打开.
- springMVC @response 中文乱码解决
以下任选一种 在web.xml中: 添加一个过滤器(filter),注册 org.springframework.web.filter.CharacterEncodingFilter <filt ...
- vue基于element-ui的三级CheckBox复选框
最近vue项目需要用到三级CheckBox复选框,需要实现全选反选不确定三种状态.但是element-ui table只支持多选行,并不能支持三级及以上的多选,所以写了这篇技术博文供以后学习使用. 效 ...
- freemarker程序开发
1.程序开发入门 1.1 创建配置实例 首先,你应该创建一个freemarker.template.Configuration的实例,然后调整它的设置.Configuration实例是存储FreeMa ...
- HTTP学习记录:三、状态码
学习资源主要为:@小坦克HTTP相关博客 常见的HTTP状态码: 200--请求成功: 302--重定向: 304--Not Modified:表示上次的文档已经被缓存了,还可以继续使用: 400-- ...
- Python学习之==>Excel操作
一.简介 使用Python读.写.修改excel分别需要用到xlrd.xlwt以及xlutils模块,这几个模块使用pip安装即可. 二.读excel import xlrd book = xlrd. ...
- C# Hook 方法
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.R ...
- Ubuntu16.04 国内源 source 注意事项
注意对应关系 Ubuntu16.04 为 xenial 如果贴错了 在你执行 sudo apt-get upgrade 的时候很麻烦.很慢会更新到 另外版本系统中. 被坑过…… 阿里云源 deb ht ...
- Linux运维的第三周总结
01. 下列文件中, 包含了主机名到IP地址的映射关系的文件是() A. /etc/HOSTNAME B. /etc/hosts C. /etc/resolv.conf ...
- maven指定本地jar包
来自 https://blog.csdn.net/zhengxiangwen/article/details/50734565 一.怎么添加jar到本地仓库呢?步骤:1.cmd命令进入该jar包所在路 ...