Dynamic Rankings
板子题
用的整体二分
唯一要注意的是别总手误打错变量
最近总犯这样sb错误,我佛了
#include<bits/stdc++.h> using namespace std; const int N=1e5+7; const int inf=0x3f3f3f3f; struct node{ int op,x,y,z; }q[3*N],lq[3*N],rq[3*N]; int n,m,t,a[N],c[N],ans[N],num; void change(int x,int y){ while(x<=n){ c[x]+=y; x+=x&-x; } } int ask(int x){ int y=0; while(x){ y+=c[x]; x-=x&-x; } return y; } void solve(int l,int r,int st,int ed){ if(st>ed)return; if(l==r){ for(int i=st;i<=ed;i++) if(q[i].op>0)ans[q[i].op]=l; return; } int mid=(l+r)>>1; int lt=0,rt=0; for(int i=st;i<=ed;i++){ if(q[i].op<1){ if(q[i].z<=mid)change(q[i].x,q[i].y),lq[++lt]=q[i]; else rq[++rt]=q[i]; } else { int cnt=ask(q[i].y)-ask(q[i].x-1); if(cnt>=q[i].z)lq[++lt]=q[i]; else q[i].z-=cnt,rq[++rt]=q[i]; } } for(int i=ed;i>=st;--i){ if(q[i].op<1&&q[i].z<=mid)change(q[i].x,-q[i].y); } for(int i=1;i<=lt;i++)q[st+i-1]=lq[i]; for(int i=1;i<=rt;i++)q[st+lt+i-1]=rq[i]; solve(l,mid,st,st+lt-1); solve(mid+1,r,st+lt,ed); } int main(){ cin>>n>>m; for(int i=1;i<=n;i++){ scanf("%d",&a[i]); q[++t].op=0; q[t].x=i; q[t].z=a[i]; q[t].y=1; } for(int i=1;i<=m;i++){ char ch[2]; int x,y; scanf("%s",ch); if(ch[0]=='C'){ scanf("%d%d",&x,&y); q[++t].op=-1; q[t].x=x; q[t].z=a[x]; q[t].y=-1; q[++t].op=0; q[t].x=x; q[t].z=y; q[t].y=1; a[x]=y; } else { scanf("%d%d%d",&q[t+1].x,&q[t+1].y,&q[t+1].z); q[++t].op=++num; } } solve(-10,10,1,t); for(int i=1;i<=num;i++) printf("%d\n",ans[i]); return 0; }
Dynamic Rankings的更多相关文章
- BZOJ 1901: Zju2112 Dynamic Rankings[带修改的主席树]【学习笔记】
1901: Zju2112 Dynamic Rankings Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 7143 Solved: 2968[Su ...
- [bzoj1901][zoj2112][Dynamic Rankings] (整体二分+树状数组 or 动态开点线段树 or 主席树)
Dynamic Rankings Time Limit: 10 Seconds Memory Limit: 32768 KB The Company Dynamic Rankings has ...
- [BZOJ1901]Zju2112 Dynamic Rankings
[BZOJ1901]Zju2112 Dynamic Rankings 试题描述 给定一个含有n个数的序列a[1],a[2],a[3]--a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i ...
- ZOJ 2112 Dynamic Rankings(动态区间第 k 大+块状链表)
题目大意 给定一个数列,编号从 1 到 n,现在有 m 个操作,操作分两类: 1. 修改数列中某个位置的数的值为 val 2. 询问 [L, R] 这个区间中第 k 大的是多少 n<=50,00 ...
- BZOJ-1901 Zju2112 Dynamic Rankings 函数式线段树 套 树状数组+离线处理
1901: Zju2112 Dynamic Rankings Time Limit: 10 Sec Memory Limit: 128 MB Submit: 6058 Solved: 2521 [Su ...
- ZOJ 2112 Dynamic Rankings(主席树の动态kth)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2112 The Company Dynamic Rankings ...
- zoj 2112 Dynamic Rankings 动态第k大 线段树套Treap
Dynamic Rankings Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.zju.edu.cn/onlinejudge/show ...
- Bzoj 1901: Zju2112 Dynamic Rankings 树套树,线段树,平衡树,Treap
1901: Zju2112 Dynamic Rankings Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 6471 Solved: 2697[Su ...
- Bzoj 1901: Zju2112 Dynamic Rankings 主席树,可持久,树状数组,离散化
1901: Zju2112 Dynamic Rankings Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 6321 Solved: 2628[Su ...
- 【BZOJ-1901】Dynamic Rankings 带修主席树
1901: Zju2112 Dynamic Rankings Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 7292 Solved: 3038[Su ...
随机推荐
- ubuntu18.04修改网卡名称为eth0
1.修改grub文件 vim /etc/default/grub 查找 GRUB_CMDLINE_LINUX="" 修改为 GRUB_CMDLINE_LINUX="net ...
- selenium之元素定位-xpath
被测试网页的HTML代码 <html> <body> <div id="div1" style="text-align:center&quo ...
- lombok使用
下载地址 链接:https://pan.baidu.com/s/19Rz7sgasVv5Gc7vw1A4whA 提取码:6bgg lombok的安装: 使用lombox是需要安装的,如果不安装,IDE ...
- Linux:Day18(上) dns服务基础进阶
DNS:Domain Name Service,协议(C/S,53/udp,53/tcp):应用层协议. BIND:Bekerley Internat Name Domain,ISC(www.isc. ...
- pytorch的函数中的group参数的作用
1.当设置group=1时: conv = nn.Conv2d(in_channels=, out_channels=, kernel_size=, groups=) conv.weight.data ...
- html简单的知识
分布式版本控制git pwd查询当前目录 ls ls -la git config --global user.name xxx git config --global user. ...
- IO模型介绍
先理解几个问题: (1)为什么读取文件的时候,需要用户进程通过系统调用内核完成(系统不能自己调用内核)什么是用户态和内核态?为什么要区分内核态和用户态呢? 在 CPU 的所有指令中,有些指令是非常危险 ...
- Django中使用极验Geetest滑动验证码
一,环境部署 1.创建一个django测试项目 此处省略... 二,文档部署 1.下载安装python对应的SDK 使用命令从Github导入完整项目:git clone https://github ...
- c提高第六次课 文件读取
一.基本概念1.文件分类 普通文件:存放在硬盘中的文件 设备文件:屏幕.键盘等特殊文件 文本文件:ASCII文件,每个字节存放一个字符的ASCII码,打开文件看到的是文本信息 二进制文件:数据按其在内 ...
- 轻松理解 Spark 的 aggregate 方法
2019-04-20 关键字: Spark 的 agrregate 作用.Scala 的 aggregate 是什么 Spark 编程中的 aggregate 方法还是比较常用的.本篇文章站在初学者的 ...