洛谷P4867 Gty的二逼妹子序列(莫队+树状数组)
传送门
本来打算用主席树
然后发现没办法维护颜色数
于是用了莫队加树状数组
然后竟然A了……
1 //minamoto 2 #include<iostream> 3 #include<cstdio> 4 #include<cmath> 5 #include<algorithm> 6 using namespace std; 7 #define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++) 8 char buf[1<<21],*p1=buf,*p2=buf; 9 inline int read(){ 10 #define num ch-'0' 11 char ch;bool flag=0;int res; 12 while(!isdigit(ch=getc())) 13 (ch=='-')&&(flag=true); 14 for(res=num;isdigit(ch=getc());res=res*10+num); 15 (flag)&&(res=-res); 16 #undef num 17 return res; 18 } 19 char sr[1<<21],z[20];int C=-1,Z; 20 inline void Ot(){fwrite(sr,1,C+1,stdout),C=-1;} 21 inline void print(int x){ 22 if(C>1<<20)Ot();if(x<0)sr[++C]=45,x=-x; 23 while(z[++Z]=x%10+48,x/=10); 24 while(sr[++C]=z[Z],--Z);sr[++C]='\n'; 25 } 26 const int N=1e5+5,M=1e6+5; 27 int cnt[N],a[N],ans[M],c[N],rt[N],n,m,res,l,r,s; 28 struct node{ 29 int l,r,ql,qr,id; 30 node(){} 31 node(int l,int r,int ql,int qr,int id):l(l),r(r),ql(ql),qr(qr),id(id){} 32 inline bool operator <(const node &b)const 33 {return rt[l]==rt[b.l]?rt[l]&1?r<b.r:r>b.r:l<b.l;} 34 }q[M]; 35 inline void change(int x,int y){ 36 for(;x<=n;x+=x&-x) c[x]+=y; 37 } 38 inline int query(int x){ 39 int res=0; 40 for(;x;x-=x&-x) res+=c[x]; 41 return res; 42 } 43 inline void add(int x){ 44 if(++cnt[x]==1) change(x,1); 45 } 46 inline void del(int x){ 47 if(--cnt[x]==0) change(x,-1); 48 } 49 int main(){ 50 // freopen("testdata.in","r",stdin); 51 n=read(),m=read(),s=sqrt(n); 52 for(int i=1;i<=n;++i) a[i]=read(),rt[i]=(i-1)/s+1; 53 for(int i=1,l,r,ql,qr;i<=m;++i) 54 l=read(),r=read(),ql=read(),qr=read(),q[i]=node(l,r,ql,qr,i); 55 sort(q+1,q+1+m); 56 l=1,r=0,res=0; 57 for(int i=1;i<=m;++i){ 58 while(l>q[i].l) add(a[--l]); 59 while(r<q[i].r) add(a[++r]); 60 while(l<q[i].l) del(a[l++]); 61 while(r>q[i].r) del(a[r--]); 62 ans[q[i].id]=query(q[i].qr)-query(q[i].ql-1); 63 } 64 for(int i=1;i<=m;++i) print(ans[i]); 65 Ot(); 66 return 0; 67 }
转载于:https://www.cnblogs.com/bztMinamoto/p/9756178.html
洛谷P4867 Gty的二逼妹子序列(莫队+树状数组)相关推荐
- BZOJ3809: Gty的二逼妹子序列
BZOJ3809: Gty的二逼妹子序列 又是一道权限题... 本蒟蒻没钱氪金... 附上洛谷题面: 洛谷P4867 Gty的二逼妹子序列 题目描述 Autumn和Bakser又在研究Gty的妹子序列 ...
- [BZOJ3809]Gty的二逼妹子序列
[BZOJ3809]Gty的二逼妹子序列 试题描述 Autumn和Bakser又在研究Gty的妹子序列了!但他们遇到了一个难题. 对于一段妹子们,他们想让你帮忙求出这之内美丽度∈[a,b]的妹子的美丽 ...
- 【bzoj3089】gty的二逼妹子序列
一眼又是个莫队-- 首先看这时间/空间复杂度,线段树/主席树就别想了-- 然后么--zcy就有点傻了-- 于是zcy看了下hzwer,感觉受教育了. 分块的调块大小真是玄学设计. 有没有一种方法在修改 ...
- 洛谷 P2163 [SHOI2007]园丁的烦恼 (离线sort,树状数组,解决三维偏序问题)
P2163 [SHOI2007]园丁的烦恼 题目描述 很久很久以前,在遥远的大陆上有一个美丽的国家.统治着这个美丽国家的国王是一个园艺爱好者,在他的皇家花园里种植着各种奇花异草. 有一天国王漫步在花园 ...
- CDQ分治(二维CDQ 、三维CDQ+树状数组、四维CDQ+CDQ+树状数组)
CDQ分治 CDQ分治相较于普通分治,多了左区间处理后对于右区间的影响. 利用这一点,CDQ分治可以用来做很多数据结构的题目(树状数组.线段树),加一个log的时间复杂度来优化一维. 操作: 假设有两 ...
- P4867-Gty的二逼妹子序列【平衡结合,莫队,分块】
正题 题目链接:https://www.luogu.com.cn/problem/P4867 题目大意 一个序列要求支持询问一个区间[l,r][l,r][l,r]内在[a,b][a,b][a,b]之间 ...
- 【洛谷P6072 [MdOI2020] Path】【回滚莫队+Trie】
题意 给一棵 n n n个节点的树,边有边权.定义一条路径的权值为边权的异或和.找两条节点不相交的路径,使得这两条路径的权值和最大. n ≤ 30000 n\le 30000 n≤30000 分析 问 ...
- 洛谷 P3674 小清新人渣的本愿 bitset+莫队
题目: https://www.luogu.org/problemnew/show/P3674 题目大意: 给你一个长度为 N N N的序列,每次询问[l,r]能不能取出两个数,和或差或积等于C&qu ...
- 洛谷 P3674 小清新人渣的本愿(莫队 +bitset)
我们利用一个长度为 1e5 的 bitset,当数值 c 出现时,将 c 位置赋值为 1,对于题目要求的操作可以转变为 求 bitset 中存在两个位置相差为 x 的 1 这个比较难,如下图 bits ...
- 洛谷P1494 [国家集训队]小Z的袜子 莫队
题目描述 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命-- 具体来说,小Z把这N只袜子从1到N编 ...
最新文章
- php rdkafka实例,linux下php扩展kafka的实例分享
- ICLR 2019论文接收结果揭晓:24篇oral论文有没有你?
- oracle 查看函数被哪些触发器引用_oracle如何查看存储过程,存储函数,触发器的具体内容...
- 计算机知识的研修总结,计算机信息技术学习研修总结
- Windows conda ImportError: DLL load failed while importing shell
- 牛客网python版本多行输入输出
- 读书记之《UnixLinux大学教程》
- sketch插件 android,30个值得拥有的sketch插件(4)完结篇
- 版本控制工具-Git-入门到精通
- 使用k-d树进行无序点云去噪
- 3G门户GO手机浏览器试用
- 在python中查看关键字、需要在解释器中执行_现有代码 d={},在python3解释器中执行 d[([1,2])] = 'b'得到的结果为():...
- 计算机工程学院文艺例会,计算机工程系团总支学生会召开第二次全体例会
- JavaWeb学习:cookies
- linux 系统删除 3天以前的 指定的进程
- 如何安装国内源(阿里云yum源)
- win10 VSCODE卡死的问题
- 不论你技术多牛逼,这13条职场“潜规则”,越早知道越好!
- 《中华人民共和国网络安全法》
- HPLC电力载波灯控的节能照明 智慧照明方案