传送门

本来打算用主席树

然后发现没办法维护颜色数

于是用了莫队加树状数组

然后竟然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的二逼妹子序列(莫队+树状数组)相关推荐

  1. BZOJ3809: Gty的二逼妹子序列

    BZOJ3809: Gty的二逼妹子序列 又是一道权限题... 本蒟蒻没钱氪金... 附上洛谷题面: 洛谷P4867 Gty的二逼妹子序列 题目描述 Autumn和Bakser又在研究Gty的妹子序列 ...

  2. [BZOJ3809]Gty的二逼妹子序列

    [BZOJ3809]Gty的二逼妹子序列 试题描述 Autumn和Bakser又在研究Gty的妹子序列了!但他们遇到了一个难题. 对于一段妹子们,他们想让你帮忙求出这之内美丽度∈[a,b]的妹子的美丽 ...

  3. 【bzoj3089】gty的二逼妹子序列

    一眼又是个莫队-- 首先看这时间/空间复杂度,线段树/主席树就别想了-- 然后么--zcy就有点傻了-- 于是zcy看了下hzwer,感觉受教育了. 分块的调块大小真是玄学设计. 有没有一种方法在修改 ...

  4. 洛谷 P2163 [SHOI2007]园丁的烦恼 (离线sort,树状数组,解决三维偏序问题)

    P2163 [SHOI2007]园丁的烦恼 题目描述 很久很久以前,在遥远的大陆上有一个美丽的国家.统治着这个美丽国家的国王是一个园艺爱好者,在他的皇家花园里种植着各种奇花异草. 有一天国王漫步在花园 ...

  5. CDQ分治(二维CDQ 、三维CDQ+树状数组、四维CDQ+CDQ+树状数组)

    CDQ分治 CDQ分治相较于普通分治,多了左区间处理后对于右区间的影响. 利用这一点,CDQ分治可以用来做很多数据结构的题目(树状数组.线段树),加一个log的时间复杂度来优化一维. 操作: 假设有两 ...

  6. P4867-Gty的二逼妹子序列【平衡结合,莫队,分块】

    正题 题目链接:https://www.luogu.com.cn/problem/P4867 题目大意 一个序列要求支持询问一个区间[l,r][l,r][l,r]内在[a,b][a,b][a,b]之间 ...

  7. 【洛谷P6072 [MdOI2020] Path】【回滚莫队+Trie】

    题意 给一棵 n n n个节点的树,边有边权.定义一条路径的权值为边权的异或和.找两条节点不相交的路径,使得这两条路径的权值和最大. n ≤ 30000 n\le 30000 n≤30000 分析 问 ...

  8. 洛谷 P3674 小清新人渣的本愿 bitset+莫队

    题目: https://www.luogu.org/problemnew/show/P3674 题目大意: 给你一个长度为 N N N的序列,每次询问[l,r]能不能取出两个数,和或差或积等于C&qu ...

  9. 洛谷 P3674 小清新人渣的本愿(莫队 +bitset)

    我们利用一个长度为 1e5 的 bitset,当数值 c 出现时,将 c 位置赋值为 1,对于题目要求的操作可以转变为 求 bitset 中存在两个位置相差为 x 的 1 这个比较难,如下图 bits ...

  10. 洛谷P1494 [国家集训队]小Z的袜子 莫队

    题目描述 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命-- 具体来说,小Z把这N只袜子从1到N编 ...

最新文章

  1. php rdkafka实例,linux下php扩展kafka的实例分享
  2. ICLR 2019论文接收结果揭晓:24篇oral论文有没有你?
  3. oracle 查看函数被哪些触发器引用_oracle如何查看存储过程,存储函数,触发器的具体内容...
  4. 计算机知识的研修总结,计算机信息技术学习研修总结
  5. Windows conda ImportError: DLL load failed while importing shell
  6. 牛客网python版本多行输入输出
  7. 读书记之《UnixLinux大学教程》
  8. sketch插件 android,30个值得拥有的sketch插件(4)完结篇
  9. 版本控制工具-Git-入门到精通
  10. 使用k-d树进行无序点云去噪
  11. 3G门户GO手机浏览器试用
  12. 在python中查看关键字、需要在解释器中执行_现有代码 d={},在python3解释器中执行 d[([1,2])] = 'b'得到的结果为():...
  13. 计算机工程学院文艺例会,计算机工程系团总支学生会召开第二次全体例会
  14. JavaWeb学习:cookies
  15. linux 系统删除 3天以前的 指定的进程
  16. 如何安装国内源(阿里云yum源)
  17. win10 VSCODE卡死的问题
  18. 不论你技术多牛逼,这13条职场“潜规则”,越早知道越好!
  19. 《中华人民共和国网络安全法》
  20. HPLC电力载波灯控的节能照明 智慧照明方案

热门文章

  1. [Servletamp;JSP] 标准标签
  2. git查看某次commit的修改
  3. 贝塞尔曲线(UIBezierPath)属性、方法汇总
  4. 知识整理2019清北学堂提高储备D1
  5. C程序设计 4顺序程序设计
  6. vb.net 正則表達式 取 固定格式的字符
  7. 关于Javascript, php的web公开课笔记
  8. CocoaPods 2017最新、最快安装和使用说明
  9. 所闻所获3:下拉刷新控件1
  10. python多重继承super父类参数_Python super()函数使用及多重继承