LINK:Multiset

主要点一下 二分和树状数组找第k大的做法.

线段树的做法是平凡的 开一个数组实现就能卡过.

考虑如树状数组何找第k大 二分+查询来判定是不优秀的。

考虑树状数组上倍增来做. 考虑从0开始跳 定义跳到的节点为前缀和.

那么不断跳累加权值即可.

第三种做法是二分 (其实我最先想到的是类似的做法.

观察到答案最终只要一个数字 受到第三个样例的启发 考虑维护最大值/最小值.

直接开堆乱搞是不正确的 无法衡量之前是否删除当前的最大值了.

考虑二分这个最大值/最小值

这里以最小值为例 因为比较好描述 那么check 就是看一下<=mid的数字是否都被删掉了.

这样做可以发现满足判定的单调性.

这里用的是第一种做法。

const int MAXN=1000010;
int n,Q;
int sum[MAXN<<2];
inline void insert(int p,int l,int r,int x)
{
++sum[p];
if(l==r)return;
int mid=(l+r)>>1;
if(x<=mid)insert(zz,l,mid,x);
else insert(yy,mid+1,r,x);
}
inline int ask(int p,int l,int r,int k)
{
if(l==r)return l;
int mid=(l+r)>>1;
if(sum[zz]>=k)return ask(zz,l,mid,k);
return ask(yy,mid+1,r,k-sum[zz]);
}
inline void erase(int p,int l,int r,int x)
{
--sum[p];
if(l==r)return;
int mid=(l+r)>>1;
if(x<=mid)erase(zz,l,mid,x);
else erase(yy,mid+1,r,x);
}
int main()
{
freopen("1.in","r",stdin);
get(n);get(Q);
rep(1,n,i)insert(1,1,n,read());
rep(1,Q,i)
{
int get(x);
if(x>0)insert(1,1,n,x);
else erase(1,1,n,ask(1,1,n,-x));
}
if(!sum[1])put(0);
else put(ask(1,1,n,1));
return 0;
}

最新文章

  1. 安装并使用PHPunit
  2. 六个创建模式之建造者模式(Builder Pattern)
  3. Nginx+HTTPS(SSL/TLS)
  4. 使用复合索引代替单键索引,来避免单键有null值的情况
  5. J2EE 第二阶段项目之分析业务
  6. Python 温习
  7. 利用while(code!=EOF){}来实现“无限”循环
  8. 运维人愿意听到的话 vs 不愿意听到的话
  9. iOS银行卡合法性校验
  10. Properties操作
  11. mysql索引使用技巧及注意事项
  12. css解决IE6,IE7,firefox兼容性问题
  13. Docker安装+HelloWorld+运行Tomcat
  14. CentOS7 防火墙(firewall)的操作命令(转)
  15. 『计算机视觉』物体检测之RefineDet系列
  16. Nginx配置多个基于域名的虚拟主机+实验环境搭建+测试
  17. The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar报错
  18. Linux基础命令---ipcalc计算IP
  19. 打开RAD Studio XE5提示&quot;displayNotification:内存不够&quot;解决办法
  20. 深入理解Linux内核-回收页框

热门文章

  1. css文字不透明度怎么设置?
  2. Web开发HTTP协议知识_常用http方法、http状态码等(前端开发和面试必备))
  3. SCOI 2010 连续攻击游戏(贪心,图论)
  4. 小程序爬坑(一)之时间格式IOS的兼容
  5. 技术干货丨通过wrap malloc定位C/C++的内存泄漏问题
  6. Mysql基础(五):多表查询、pymysql模块
  7. 数据可视化之PowerQuery篇(八)利用PowerQuery,进行更加灵活的数据分列
  8. 接口测试框架实战(三)| JSON 请求与响应断言
  9. 02-Python运算符
  10. 《你还在写sql语句吗?》人生苦短,进入MybatisPlus的丝滑体验