有n个人在队列中等待。假如某个人前面有一个人年龄比他小,那他就会不高兴;定义他的“不高兴度”为他前面留他最远的年龄比他小的人与他的距离,求每个人的不高兴度。 n<=10^5

Solution

权值线段树

#include <bits/stdc++.h>
using namespace std;
const int inf = 1e+9+7;
const int N = 4000005;
int n,a[N],b[N],ch[N][2],ind=1,ans[N];
void modify(int p,int l,int r,int pos,int key) {
if(l==r) {
a[p]=max(a[p],key);
}
else {
if(ch[p][0]==0) ch[p][0]=++ind;
if(ch[p][1]==0) ch[p][1]=++ind;
if(pos<=(l+r)/2) modify(ch[p][0],l,(l+r)/2,pos,key);
else modify(ch[p][1],(l+r)/2+1,r,pos,key);
a[p]=max(a[ch[p][0]],a[ch[p][1]]);
}
} int query(int p,int l,int r,int ql,int qr) {
if(l>qr || r<ql) return 0;
if(l>=ql && r<=qr) return a[p];
return max(query(ch[p][0],l,(l+r)/2,ql,qr),query(ch[p][1],(l+r)/2+1,r,ql,qr));
} int main() {
ios::sync_with_stdio(false);
cin>>n;
for(int i=1;i<=n;i++) cin>>b[i];
for(int i=n;i>=1;--i) {
int tmp=query(1,1,inf,1,b[i]-1);
if(tmp==0) ans[i]=-1;
else ans[i]=tmp-i-1;
modify(1,1,inf,b[i],i);
}
for(int i=1;i<=n;i++) {
cout<<ans[i]<<" ";
}
}

[CF91B] Queue - 权值线段树的更多相关文章

  1. BZOJ4627 前缀和 + 权值线段树

    https://www.lydsy.com/JudgeOnline/problem.php?id=4627 题意:求序列中和在L到R之间的字串种数. 要求的是和的范围,我们可以考虑先求一个前缀和pre ...

  2. BZOJ3110[Zjoi2013]K大数查询——权值线段树套线段树

    题目描述 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数是 ...

  3. BZOJ2141排队——树状数组套权值线段树(带修改的主席树)

    题目描述 排排坐,吃果果,生果甜嗦嗦,大家笑呵呵.你一个,我一个,大的分给你,小的留给我,吃完果果唱支歌,大家 乐和和.红星幼儿园的小朋友们排起了长长地队伍,准备吃果果.不过因为小朋友们的身高有所区别 ...

  4. [BZOJ5139][Usaco2017 Dec]Greedy Gift Takers 权值线段树

    Description Farmer John's nemesis, Farmer Nhoj, has NN cows (1≤N≤10^5), conveniently numbered 1…N. T ...

  5. bzoj 4627: [BeiJing2016]回转寿司 -- 权值线段树

    4627: [BeiJing2016]回转寿司 Time Limit: 10 Sec  Memory Limit: 256 MB Description 酷爱日料的小Z经常光顾学校东门外的回转寿司店. ...

  6. bzoj 1503: [NOI2004]郁闷的出纳员 -- 权值线段树

    1503: [NOI2004]郁闷的出纳员 Time Limit: 5 Sec  Memory Limit: 64 MB Description OIER公司是一家大型专业化软件公司,有着数以万计的员 ...

  7. BZOJ 4777 Usaco2017 Open Switch Grass Kruskal+替罪羊树+权值线段树

    这道题首先可以看出答案一定是一条边,而且答案一定在最小生成树上,那么我们就可以在这个最小生成树上维护他与异色儿子的边最小值,所以我们就可以已通过Kruskal和一棵平衡树来解决,时间复杂度是O(n*l ...

  8. 【bzoj2212】[Poi2011]Tree Rotations 权值线段树合并

    原文地址:http://www.cnblogs.com/GXZlegend/p/6826614.html 题目描述 Byteasar the gardener is growing a rare tr ...

  9. 【bzoj3065】带插入区间K小值 替罪羊树套权值线段树

    题目描述 从前有n只跳蚤排成一行做早操,每只跳蚤都有自己的一个弹跳力a[i].跳蚤国王看着这些跳蚤国欣欣向荣的情景,感到非常高兴.这时跳蚤国王决定理性愉悦一下,查询区间k小值.他每次向它的随从伏特提出 ...

随机推荐

  1. java 开发社区蔬菜、食品交易平台系统 源码

    开发环境:    Windows操作系统开发工具: MyEclipse+Jdk+Tomcat+Mysql数据库 运行效果图 源码及原文链接:https://javadao.xyz/forum.php? ...

  2. nginx 正向代理与反向代理

    一.介绍 反向代理:让Internet上的用户可以访问局域网内的资源,中间设置一个代理服务器,如下所示,红色圈是指局域网内的站点(myweb站点是我们的站点,例如iis).箭头不能反过来 正向代理:客 ...

  3. 虚拟机中给linux 系统添加硬盘以后,进行分区挂载

    当自己虚拟机中的linux 系统硬盘不够用的时候需要添加硬盘给系统使用,所以可以通过以下的步骤实现 1.关闭自己的客户机,然后执行以下步骤 2. 上面的步骤完成以后,重点来了,下面打开客户机,执行以下 ...

  4. 使用jdbc将mysql数据库中的内容封装为指定对象的list集合

    使用jdbc将mysql数据库中的内容封装为指定对象的list集合 public List<User> findAll() { private JdbcTemplate template ...

  5. update mysql row (You can't specify target table 'x' for update in FROM clause)

    sql语句(update/delete都会出现此问题) update x set available_material_id = null where id not in (select id fro ...

  6. 软件测试常见术语(英->汉)收藏好随时备用!

    Defect 缺陷Defect Rate 缺陷率Verification & Validation 验证和确认Failure 故障White-box Testing 白盒测试Black-box ...

  7. for循环嵌套练习题or99乘法表

    //输出1-10之间的和 public static void whileTest(){ //定义变量用于存储不断变化的和 int sum = 0; //定义变量,用于记录不断变化的被加数 int x ...

  8. myeclipce 按 Alt + / 代码提示无法感应自己定义的类 解决方案

    解决方案:如图把这些选项全部都勾选即可.(注意 :需先排除是不是快捷键冲突,我遇到的问题是Alt+/可以提示jdk内置的对象和方法,但是无法提示自定义的类和方法.如Alt+/无法提示任何信息 需重新设 ...

  9. 【redis】pipeline - 管道模型

    redis-pipeline 2020-02-10: 因为我把github相关的wiki删了,所以导致破图...待解决.(讲真github-wiki跟project是2个url,真的不好用) 因为用的 ...

  10. FIB表与RIB表的区别与联系

    RIB (route information base) 和 FIB (forwarding information base),又称Ip路由表 和 CEF表,它们之间的关系可以用下面这张图片来高度概 ...