博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jzoj1951 布娃娃
阅读量:5217 次
发布时间:2019-06-14

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

一开始看错题目了,很容易看成i喜欢的中,让后写主席树区间第k大

反过来其实也很好做,我们考虑将所有的L,R,P丢到一起考虑,分两种操作,询问和修改(是不是很像cdq分治)

排个序再加上个平衡树离散化+ZKW线段树求第k大就好了

(注意题目坑点:是第k大不是第k小)

#pragma GCC optimize("O3")#pragma G++ optimize("O3")#include
#include
#include
#define N 100010#define mid (l+r>>1)using namespace std;int n,m,t=0,ans=0;int p[N],c[N],l[N],r[N],b[N];struct op{ int o,x,y; } s[N*3];inline void input(int* s){ long long a,f,m,p; scanf("%lld%lld%lld%lld",&a,&f,&m,&p); s[1]=f%m; for(int i=2;i<=n;++i) s[i]=(s[i-1]*p+a+i)%m;}struct ZKW{ int n,M,s[N<<2]; void init(int T){ n=T; for(M=1;M<=n;M<<=1); --M; } inline void insert(int x){ for(x+=M;x;x>>=1) ++s[x]; } inline void remove(int x){ for(x+=M;x;x>>=1) --s[x]; } inline int kth(int k){ int x; for(x=1;x<=M;) if(s[x<<1]>=k) x=x<<1; else { k-=s[x<<1]; x=x<<1|1; } return x-M; }} T;inline bool c1(op a,op b){ return a.x
r[i]) swap(l[i],r[i]); } sort(b+1,b+1+n); m=unique(b+1,b+1+n)-b-1; for(int i=1,j;i<=n;++i){ j=m-(lower_bound(b+1,b+1+m,c[i])-b)+1; s[++t]=(op){
2,p[i],i}; s[++t]=(op){
0,l[i],j}; s[++t]=(op){
1,r[i]+1,j}; } reverse(b+1,b+1+m); sort(s+1,s+1+t,c1); for(int i=1;i<=t;++i) if(s[i].o==2) { if(T.s[1]>=s[i].y) ans=(ans+b[T.kth(s[i].y)])%19921228; } else if(s[i].o==0) T.insert(s[i].y); else T.remove(s[i].y); printf("%d\n",ans);} int main(){ _18520(); }

转载于:https://www.cnblogs.com/Extended-Ash/p/9477150.html

你可能感兴趣的文章
【Python学习笔记】1.基础知识
查看>>
梦断代码阅读笔记02
查看>>
selenium学习中遇到的问题
查看>>
大数据学习之一——了解简单概念
查看>>
Linux升级内核教程(CentOS7)
查看>>
Lintcode: Partition Array
查看>>
分享适合个人站长的5类型网站
查看>>
类别的三个作用
查看>>
【SICP练习】85 练习2.57
查看>>
runC爆严重安全漏洞,主机可被攻击!使用容器的快打补丁
查看>>
Maximum Product Subarray
查看>>
solr相关配置翻译
查看>>
通过beego快速创建一个Restful风格API项目及API文档自动化(转)
查看>>
解决DataSnap支持的Tcp长连接数受限的两种方法
查看>>
Synchronous/Asynchronous:任务的同步异步,以及asynchronous callback异步回调
查看>>
ASP.NET MVC5 高级编程-学习日记-第二章 控制器
查看>>
Hibernate中inverse="true"的理解
查看>>
高级滤波
查看>>
使用arcpy添加grb2数据到镶嵌数据集中
查看>>
[转载] MySQL的四种事务隔离级别
查看>>