容易想到区间转化成前缀和。这样每个询问有了二维坐标,莫队即可。

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cmath>
  4. #include<cstdlib>
  5. #include<cstring>
  6. #include<algorithm>
  7. using namespace std;
  8. #define ll long long
  9. #define N 50010
  10. char getc(){char c=getchar();while ((c<'A'||c>'Z')&&(c<'a'||c>'z')&&(c<''||c>'')) c=getchar();return c;}
  11. int gcd(int n,int m){return m==?n:gcd(m,n%m);}
  12. int read()
  13. {
  14. int x=,f=;char c=getchar();
  15. while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
  16. while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
  17. return x*f;
  18. }
  19. int n,m,a[N],cntx[N],cnty[N],t,block;
  20. ll ans[N];
  21. struct data
  22. {
  23. int k,x,y,i,op;
  24. bool operator <(const data&a) const
  25. {
  26. return k<a.k||k==a.k&&(k&?y>a.y:y<a.y);
  27. }
  28. }q[N<<];
  29. int main()
  30. {
  31. #ifndef ONLINE_JUDGE
  32. freopen("bzoj5016.in","r",stdin);
  33. freopen("bzoj5016.out","w",stdout);
  34. const char LL[]="%I64d\n";
  35. #else
  36. const char LL[]="%lld\n";
  37. #endif
  38. n=read();
  39. for (int i=;i<=n;i++) a[i]=read();
  40. m=read();block=sqrt(n);
  41. for (int i=;i<=m;i++)
  42. {
  43. int l1=read(),r1=read(),l2=read(),r2=read();
  44. t++,q[t].x=r1,q[t].y=r2,q[t].i=i,q[t].op=,q[t].k=q[t].x/block;
  45. t++,q[t].x=r1,q[t].y=l2-,q[t].i=i,q[t].op=-,q[t].k=q[t].x/block;
  46. t++,q[t].x=l1-,q[t].y=r2,q[t].i=i,q[t].op=-,q[t].k=q[t].x/block;
  47. t++,q[t].x=l1-,q[t].y=l2-,q[t].i=i,q[t].op=,q[t].k=q[t].x/block;
  48. }
  49. sort(q+,q+t+);
  50. int x=,y=;ll cur=;
  51. for (int i=;i<=t;i++)
  52. {
  53. while (y<q[i].y) y++,cnty[a[y]]++,cur+=cntx[a[y]];
  54. while (y>q[i].y) cur-=cntx[a[y]],cnty[a[y]]--,--y;
  55. while (x<q[i].x) x++,cntx[a[x]]++,cur+=cnty[a[x]];
  56. while (x>q[i].x) cur-=cnty[a[x]],cntx[a[x]]--,--x;
  57. ans[q[i].i]+=q[i].op*cur;
  58. }
  59. for (int i=;i<=m;i++) printf(LL,ans[i]);
  60. return ;
  61. }

BZOJ5016 Snoi2017一个简单的询问(莫队)的更多相关文章

  1. Gym101138D Strange Queries/BZOJ5016 SNOI2017 一个简单的询问 莫队、前缀和、容斥

    传送门--Gym 传送门--BZOJ THUWC2019D1T1撞题可还行 以前有些人做过还问过我,但是我没有珍惜,直到进入考场才追悔莫及-- 设\(que_{i,j}\)表示询问\((1,i,1,j ...

  2. BZOJ5016:[SNOI2017]一个简单的询问(莫队)

    Description 给你一个长度为N的序列ai,1≤i≤N和q组询问,每组询问读入l1,r1,l2,r2,需输出 get(l,r,x)表示计算区间[l,r]中,数字x出现了多少次. Input 第 ...

  3. 【BZOJ5016】[Snoi2017]一个简单的询问 莫队

    [BZOJ5016][Snoi2017]一个简单的询问 Description 给你一个长度为N的序列ai,1≤i≤N和q组询问,每组询问读入l1,r1,l2,r2,需输出 get(l,r,x)表示计 ...

  4. 【bzoj5016】[Snoi2017]一个简单的询问 莫队算法

    题目描述 给你一个长度为N的序列ai,1≤i≤N和q组询问,每组询问读入l1,r1,l2,r2,需输出 get(l,r,x)表示计算区间[l,r]中,数字x出现了多少次. 输入 第一行,一个数字N,表 ...

  5. bzoj5016 & loj2254 [Snoi2017]一个简单的询问 莫队

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=5016 https://loj.ac/problem/2254 题解 原式是这样的 \[ \su ...

  6. [bzoj5016][Snoi2017]一个简单的询问

    来自FallDream的博客,未经允许,请勿转载,谢谢. 给你一个长度为N的序列ai,1≤i≤N和q组询问,每组询问读入l1,r1,l2,r2,需输出   get(l,r,x)表示计算区间[l,r]中 ...

  7. [SNOI2017]一个简单的询问

    [SNOI2017]一个简单的询问 题目大意: 给定一个长度为\(n(n\le50000)\)的序列\(A(1\le A_i\le n)\),定义\(\operatorname{get}(l,r,x) ...

  8. [SNOI2017]一个简单的询问【莫队+容斥原理】

    题目大意 给你一个数列,让你求两个区间内各个数出现次数的乘积的和. 分析 数据范围告诉我们可以用莫队过. 我并不知道什么曼哈顿什么乱七八糟的东西,但是我们可以用容斥原理将这个式子展开来. \[\sum ...

  9. bzoj 5016: [Snoi2017]一个简单的询问

    Description 给你一个长度为N的序列ai,1≤i≤N和q组询问,每组询问读入l1,r1,l2,r2,需输出 get(l,r,x)表示计算区间[l,r]中,数字x出现了多少次. Input 第 ...

随机推荐

  1. Why HBase

    3.1.1,为什么选用HBases a)      容量巨大 HBase 的单表可以有百亿行.百万列,数据矩阵横向和纵向两个维度所支持的数据量级 都非常具有弹性.传统的关系型数据库,如 Oracle ...

  2. Luogu1445 [Violet]樱花

    题面 题解 $$ \frac 1x + \frac 1y = \frac 1{n!} \\ \frac{x+y}{xy}=\frac 1{n!} \\ xy=n!(x+y) \\ xy-n!(x+y) ...

  3. 收集的PHP工具及类库

    composer     PHP的依赖管理工具 phpmig        PHP的数据库迁移工具,依赖于composer Requests for PHP    HTTP请求库,采集页面可以用到的 ...

  4. oss上传文件0字节

    最近使用oss上传文件,不同项目中使用的版本也不同,之前的都能正常上传,最近因需要添加ObjectMetaData属性,扩展了一个方法,发现上传的文件始终是0字节的,最终跟源码发现conntentLe ...

  5. jmeter执行顺序及作用域规则

    1.执行顺序 配置元件 前置处理器 定时器 采样器 后置处理器 断言 监听器 备注: 服务器响应为空的话后三个不执行 作用域内存在采样器时定时器.断言.前置/后置处理器才执行 逻辑控制器和采样器按照在 ...

  6. jquery on函数和prop与attr区别

    一.jquery on()方法 1.语法 2.例子 $(document).ready(function(){ $("p").on("click",functi ...

  7. 剑指offer-数值的整数方

    数值的整数方 一.问题描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 二.算法思路 按照指数Exp的情况进行讨论. Exp> ...

  8. Amazon移除差评适用范围 - Amazon request for the feedback removal

    Greetings from Amazon Seller Support, Please accept my sincere apologies for the inconvenience cause ...

  9. Beta发布—美工+文案

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2408 视频展示地址:https://www.bilibili.com/v ...

  10. 改进意见的答复及bug重现

    各组对本组的互评链接如下 Thunder:http://www.cnblogs.com/vector121/p/7905300.html 王者荣耀交流协会:http://www.cnblogs.com ...