原题传送门

Luogu P4396 [AHOI2013]作业

询问多了10倍,但还能跑过(smog

  1. #include <bits/stdc++.h>
  2. #define N 100005
  3. #define M 1000005
  4. //#define getchar nc
  5. using namespace std;
  6. inline char nc(){
  7. static char buf[100000],*p1=buf,*p2=buf;
  8. return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;
  9. }
  10. inline int read()
  11. {
  12. register int x=0,f=1;register char ch=getchar();
  13. while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
  14. while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+ch-'0',ch=getchar();
  15. return x*f;
  16. }
  17. inline void write(register int x)
  18. {
  19. if(!x)putchar('0');if(x<0)x=-x,putchar('-');
  20. static int sta[20];register int tot=0;
  21. while(x)sta[tot++]=x%10,x/=10;
  22. while(tot)putchar(sta[--tot]+48);
  23. }
  24. int n,m,blocksize=0,ans[M],v[N],p[N];
  25. struct BinaryIndexTree{
  26. int tr[N];
  27. inline void update(register int pos,register int x)
  28. {
  29. for(register int i=pos;i<=n;i+=i&(-i))
  30. tr[i]+=x;
  31. }
  32. inline int query(register int pos)
  33. {
  34. int res=0;
  35. for(register int i=pos;i;i-=i&(-i))
  36. res+=tr[i];
  37. return res;
  38. }
  39. }tr;
  40. struct query{
  41. int l,r,a,b,id,bl;
  42. }q[M];
  43. inline bool cmp(register query a,register query b)
  44. {
  45. return a.bl!=b.bl?a.l<b.l:((a.bl&1)?a.r<b.r:a.r>b.r);
  46. }
  47. inline void add(register int x)
  48. {
  49. if(++p[v[x]]==1)
  50. tr.update(v[x],1);
  51. }
  52. inline void del(register int x)
  53. {
  54. if(--p[v[x]]==0)
  55. tr.update(v[x],-1);
  56. }
  57. int main()
  58. {
  59. n=read(),m=read();
  60. blocksize=sqrt(n);
  61. for(register int i=1;i<=n;++i)
  62. v[i]=read();
  63. for(register int i=1;i<=m;++i)
  64. q[i].l=read(),q[i].r=read(),q[i].a=read(),q[i].b=read(),q[i].id=i,q[i].bl=(q[i].l-1)/blocksize+1;
  65. sort(q+1,q+1+m,cmp);
  66. int l=1,r=0;
  67. for(register int i=1;i<=m;++i)
  68. {
  69. int ll=q[i].l,rr=q[i].r;
  70. while(l>ll)
  71. add(--l);
  72. while(l<ll)
  73. del(l++);
  74. while(r<rr)
  75. add(++r);
  76. while(r>rr)
  77. del(r--);
  78. ans[q[i].id]=tr.query(q[i].b)-tr.query(q[i].a-1);
  79. }
  80. for(register int i=1;i<=m;++i)
  81. write(ans[i]),puts("");
  82. return 0;
  83. }

【题解】Luogu P4867 Gty的二逼妹子序列的更多相关文章

  1. P4867 Gty的二逼妹子序列

    题目描述 Autumn和Bakser又在研究Gty的妹子序列了!但他们遇到了一个难题. 对于一段妹子们,他们想让你帮忙求出这之内美丽度∈[a,b]的妹子的美丽度的种类数. 为了方便,我们规定妹子们的美 ...

  2. 洛谷 P4867 Gty的二逼妹子序列

    链接: P4867 题意: 给出长度为 \(n(1\leq n\leq 10^5)\) 的序列 \(s\),保证\(1\leq s_i\leq n\).有 \(m(1\leq m\leq 10^6)\ ...

  3. Luogu 4867 Gty的二逼妹子序列

    BZOJ3809,是权限题. 我永远喜欢莫队. 先莫队一下移下左右指针,然后用一个数据结构维护一下区间$[a, b]$中的颜色的值,跟着指针移动一起修改修改,每一次$query$的时候就相当于查询一下 ...

  4. 洛谷P4867 Gty的二逼妹子序列(莫队+树状数组)

    传送门 本来打算用主席树 然后发现没办法维护颜色数 于是用了莫队加树状数组 然后竟然A了…… //minamoto #include<iostream> #include<cstdi ...

  5. [AHOI2013]作业 & Gty的二逼妹子序列 莫队

    ---题面--- 题解: 题目要求统计一个区间内数值在[a, b]内的数的个数和种数,而这个是可以用树状数组统计出来的,所以可以考虑莫队. 考虑区间[l, r]转移到[l, r + 1],那么对于维护 ...

  6. Bzoj 3809: Gty的二逼妹子序列 莫队,分块

    3809: Gty的二逼妹子序列 Time Limit: 35 Sec  Memory Limit: 28 MBSubmit: 868  Solved: 234[Submit][Status][Dis ...

  7. 【BZOJ3809/3236】Gty的二逼妹子序列 [Ahoi2013]作业 莫队算法+分块

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

  8. BZOJ 3809: Gty的二逼妹子序列

    3809: Gty的二逼妹子序列 Time Limit: 80 Sec  Memory Limit: 28 MBSubmit: 1387  Solved: 400[Submit][Status][Di ...

  9. 【BZOJ-3809】Gty的二逼妹子序列 分块 + 莫队算法

    3809: Gty的二逼妹子序列 Time Limit: 80 Sec  Memory Limit: 28 MBSubmit: 1072  Solved: 292[Submit][Status][Di ...

随机推荐

  1. treesoft,couchDB,

    下载 docker 镜像:docker pull docker.io/lu566/treesoft:1.0启动容器:docker run -d -p 127.0.0.1:18080:8080 dock ...

  2. boost::filesystem总结

    boost::filesystem是Boost C++ Libraries中的一个模块,主要作用是处理文件(Files)和目录(Directories).该模块提供的类boost::filesyste ...

  3. less命令查看文件时的常用操作

    下键或者回车:往下一行 D:往下半页 空格和f:往下一页 上键:往上一行 B:往上一页 shift+G:直接切到末尾 ?+搜索条件:从下往上搜索 /+搜索条件:从上往下搜索

  4. iOS的签名机制

    1.从keychain里“从这证书颁发机构请求证书”,这样就在本地生成了一对公私钥,保存的CertificateSigningRequest就是公钥,私钥保存在本地电脑里. 2.苹果自己有一对固定的公 ...

  5. mac配置自带vim高亮显示

    查找/etc/.vimrc的内容,如果没有的话 新建~/vimrc文件,在文件中写入如下内容即可 set ai " auto indenting set history=100 " ...

  6. 增长中的时间序列存储(Scaling Time Series Data Storage) - Part I

    本文摘译自 Netflix TechBlog : Scaling Time Series Data Storage - Part I 重点:扩容.缓存.冷热分区.分块. 时序数据 - 会员观看历史 N ...

  7. Podfile语法参考

    中文翻译可以参考:Podfile语法参考(译) 英文官方文档:Podfile Syntax Reference

  8. java mysql连接时出现的问题

    当出现Caused by: java.sql.SQLException: Unknown system variable ‘tx_isolation’ 一般是mysql-connector-java的 ...

  9. TypeError: Fetch argument 0.484375 has invalid type <class 'numpy.float32'>, must be a string or Tensor. (Can not convert a float32 into a Tensor or Operation.)

    报错: TypeError: Fetch argument 0.484375 has invalid type <class 'numpy.float32'>, must be a str ...

  10. 拼多多(7pdd)微信跳转h5页面打开app跳转任意url关注技术weixin://dl/business/?ticket

    拼多多微信跳转接口利用了微信官方的weixin://dl/business/?ticket技术,此类接口可以在官方接口中找到,分析代码如下: <title>拼多多</title> ...