博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 1503 平衡树
阅读量:6239 次
发布时间:2019-06-22

本文共 2105 字,大约阅读时间需要 7 分钟。

  我们可以用一颗平衡树维护每个人的工资,因为工资的变化会影响到后面所有的人,所以我们打一个标签,向平衡树里插入的时候减去这个标签的值,这样代表改变了之后的零点,,这样维护这个标签就好了,输出的时候要加上这个标签。

  反思:]后面打了个|,查了半天。。

/**************************************************************    Problem: 1503    User: BLADEVIL    Language: C++    Result: Accepted    Time:676 ms    Memory:3932 kb****************************************************************/ //By BLADEVIL#include 
#define maxn 200010 using namespace std; int t,tot,ans,mm;int t_left[maxn],t_right[maxn],t_size[maxn],t_key[maxn]; void right_rotate(int &t){ int k=t_left[t]; t_left[t]=t_right[k]; t_right[k]=t; t_size[k]=t_size[t]; t_size[t]=t_size[t_right[t]]+t_size[t_left[t]]+1; t=k;} void left_rotate(int &t){ int k=t_right[t]; t_right[t]=t_left[k]; t_left[k]=t; t_size[k]=t_size[t]; t_size[t]=t_size[t_left[t]]+t_size[t_right[t]]+1; t=k;} void maintain(int &t,bool flag){ if (!flag) { if (t_size[t_left[t_left[t]]]>t_size[t_right[t]]) right_rotate(t); else if (t_size[t_right[t_left[t]]]>t_size[t_right[t]]) left_rotate(t_left[t]),right_rotate(t); else return; } else { if (t_size[t_right[t_right[t]]]>t_size[t_left[t]]) left_rotate(t); else if (t_size[t_left[t_right[t]]]>t_size[t_left[t]]) right_rotate(t_right[t]),left_rotate(t); else return; } maintain(t_left[t],0); maintain(t_right[t],1); maintain(t,1); maintain(t,0);} void t_insert(int &t,int v){ if (!t) { t=++tot; t_left[t]=t_right[t]=0; t_size[t]=1; t_key[t]=v; } else { t_size[t]++; if (v
=t_key[t]); }} int t_rank(int &t,int k){ if (k==t_size[t_right[t]]+1) return t_key[t]; if (k
=m) t_insert(t,k-mm);} else if (c[0]=='F') if (k>t_size[t]) printf("-1\n"); else printf("%d\n",t_rank(t,k)+mm); else if (c[0]=='A') mm+=k; else mm-=k,ans+=t_clear(t,m-mm); //printf("|%d\n",sum); //printf("|%d %d\n",m,mm); } printf("%d\n",ans); return 0;}

 

转载于:https://www.cnblogs.com/BLADEVIL/p/3568080.html

你可能感兴趣的文章
5月15日
查看>>
DDoS***&防御[精品文章100篇]
查看>>
要学学好习一下mysql了
查看>>
linux 当路由器使用
查看>>
Exchange系列—配置传输规则
查看>>
1.3.1原文件声明规则
查看>>
Linux下搭建无人执守安装服务器
查看>>
第九节 三元操作符
查看>>
我的友情链接
查看>>
Win7新建Wifi热点(无工具版)
查看>>
IPPBX 2000 SIP 并发修改为一路
查看>>
修改Linux系统时间
查看>>
phalcon:使用路由和命名空间实现分组or模块化
查看>>
LVM Mirror Raid1管理
查看>>
last 命令:
查看>>
为linux安装epel-yum仓库
查看>>
自动登录TP-LINK路由器,获取所有信息,重启等等,实用方法
查看>>
ajax调用mvc控制器
查看>>
HTML特殊字符替换问题 html escape相关
查看>>
XCode打包出现does not contain a single boundle错误解决办法
查看>>