AC日记——Dynamic Ranking 洛谷 P2617
Dynamic Ranking
思路;
可持久化树状数组;
代码:
#include <bits/stdc++.h>
using namespace std;
#define maxn 10005
#define maxtot maxn*600
struct QueryType {
int l,r,k;
char op[];
};
struct QueryType qu[maxn];
int n,m,ai[maxn],bi[maxn<<],root[maxn];
int posl[],numl,posr[],numr,lc[maxtot];
int rc[maxtot],dis[maxtot],tot,cnt,size;
inline void in(int &now)
{
char Cget=getchar();now=;
while(Cget>''||Cget<'') Cget=getchar();
while(Cget>=''&&Cget<='')
{
now=now*+Cget-'';
Cget=getchar();
}
}
inline int lowbit(int x)
{
return x&(-x);
}
inline void add(int &now,int l,int r,int to,int x)
{
if(!now) now=++tot;dis[now]+=x;
if(l==r) return;int mid=l+r>>;
if(to<=mid) add(lc[now],l,mid,to,x);
else add(rc[now],mid+,r,to,x);
}
inline void tree_add(int x,int to,int di)
{
while(x<=n)
{
add(root[x],,size,to,di);
x+=lowbit(x);
}
}
inline void pre(int l,int r)
{
l--,numl=,numr=;
while(r) posr[++numr]=root[r],r-=lowbit(r);
while(l) posl[++numl]=root[l],l-=lowbit(l);
}
inline int query(int l,int r,int k)
{
if(l==r) return bi[l];
int di=,mid=l+r>>;
for(int i=;i<=numr;i++) di+=dis[lc[posr[i]]];
for(int i=;i<=numl;i++) di-=dis[lc[posl[i]]];
if(k<=di)
{
for(int i=;i<=numr;i++) posr[i]=lc[posr[i]];
for(int i=;i<=numl;i++) posl[i]=lc[posl[i]];
return query(l,mid,k);
}
else
{
for(int i=;i<=numr;i++) posr[i]=rc[posr[i]];
for(int i=;i<=numl;i++) posl[i]=rc[posl[i]];
return query(mid+,r,k-di);
}
}
int main()
{
in(n),in(m);
for(int i=;i<=n;i++) in(ai[i]),bi[++cnt]=ai[i];
for(int i=;i<=m;i++)
{
scanf("%s",qu[i].op),in(qu[i].l),in(qu[i].r);
if(qu[i].op[]=='Q') in(qu[i].k);
else bi[++cnt]=qu[i].r;
}
sort(bi+,bi+cnt+),size=unique(bi+,bi+cnt+)-bi-;
for(int i=;i<=n;i++)
{
ai[i]=lower_bound(bi+,bi+size+,ai[i])-bi;
tree_add(i,ai[i],);
}
for(int i=;i<=m;i++)
{
if(qu[i].op[]=='Q')
{
pre(qu[i].l,qu[i].r);
printf("%d\n",query(,size,qu[i].k));
}
else
{
qu[i].r=lower_bound(bi+,bi+size+,qu[i].r)-bi;
tree_add(qu[i].l,ai[qu[i].l],-);
ai[qu[i].l]=qu[i].r;
tree_add(qu[i].l,qu[i].r,);
}
}
return ;
}
AC日记——Dynamic Ranking 洛谷 P2617的更多相关文章
- AC日记——寻找道路 洛谷 P2296
题目描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点连通. 2 .在满足条 ...
- AC日记——铺地毯 洛谷 P1003(水水水水水~)
题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯按照编号从小到大的顺序平行于 ...
- AC日记——过河卒 洛谷 1002
题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为“马拦过河卒”. ...
- AC日记——[SDOI2017]相关分析 洛谷 P3707
[SDOI2017]相关分析 思路: 裸线段树: (玄学ac): 代码: #include <bits/stdc++.h> using namespace std; #define max ...
- AC日记——丢瓶盖 洛谷 P1316
题目描述 陶陶是个贪玩的孩子,他在地上丢了A个瓶盖,为了简化问题,我们可以当作这A个瓶盖丢在一条直线上,现在他想从这些瓶盖里找出B个,使得距离最近的2个距离最大,他想知道,最大可以到多少呢? 输入输出 ...
- AC日记——滑动窗口 洛谷 P1886
题目描述 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口.现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值. 例如: The array i ...
- AC日记——挤牛奶 洛谷 P1204
题目描述 三个农民每天清晨5点起床,然后去牛棚给3头牛挤奶.第一个农民在300秒(从5点开始计时)给他的牛挤奶,一直到1000秒.第二个农民在700秒开始,在 1200秒结束.第三个农民在1500秒开 ...
- AC日记——导弹拦截 洛谷 P1020 (dp+模拟)
题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹 ...
- AC日记——信息传递 洛谷 P2661 (tarjan求环)
题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的生日.之后每一 ...
随机推荐
- JavaScript中进制之间的转换
JavaScript中进制之间的转换 //十进制转其他 var x = 100; alert(x); alert(x.toString(2)); //转2进制 alert(x.toString(8)) ...
- mysql的IFNULL()函数FLOOR(),ROUND()函数
用法说明 1 IFNULL(expr1,expr2) 如果 expr1 不是 NULL,IFNULL() 返回 expr1,否则它返回 expr2. IFNULL()返回一个数字或字符串值,取决于它被 ...
- 第一章 深入web请求过程
B/S架构的的好处: 客户端使用统一的浏览器(browser).由于浏览器的统一性,它不需要特殊的配置和网络连接,有效的屏蔽了不同服务提供商提供给用户使用服务的差异性.另外一点是浏览器的交互特性使得用 ...
- python 面试题(2)
1.Python是如何进行内存管理的? 答:从三个方面来说,一对象的引用计数机制,二垃圾回收机制,三内存池机制 一.对象的引用计数机制 Python内部使用引用计数,来保持追踪内存中的对象,所有对象都 ...
- UVA 12034 Race
https://vjudge.net/problem/UVA-12034 题意:n个人比赛,有多少种可能的结果 假设i个人中,有j个人是第一名,方案数为C(i,j) 所以ans=Σ C(n,j)* f ...
- [洛谷P3242] [HNOI2015]接水果
洛谷题目链接:[HNOI2015]接水果 题目描述 风见幽香非常喜欢玩一个叫做 osu!的游戏,其中她最喜欢玩的模式就是接水果.由于她已经DT FC 了The big black, 她觉得这个游戏太简 ...
- 【C++对象模型】第六章 执行期语意学
执行期语意学,即在程序执行时,编译器产生额外的指令调用,确保对象的构造,内存的释放,以及类型转换与临时对象的生成的安全进行. 1.对象的构造和析构 对于类对象的构造,一般在定义之后则开始内部的构造过程 ...
- 【NOIP】提高组2016 蚯蚓
[题目链接]Universal Online Judge [题解]本题最大的特点在于从大到小切以及切分规则一致,都是切成px和x-px. 由这两个特点很容易得到结论,后切的蚯蚓得到的px一定比先切的蚯 ...
- 【vijos】P1659 河蟹王国
[算法]线段树 [题解]区间加上同一个数+区间查询最大值.注意和谐值可以是负数,初始化ans为负无穷大. #include<cstdio> #include<algorithm> ...
- Mac 上真机调试cocos2d-x-3.16的test程序
文章比较长,一个算是新手又不是新手的程序员的解决过程. 一 xcode中打开项目 首先,下载完成cocos2d-x-3.16之后,解压,然后在根目录build目录下双击cocos2d_tests.xc ...