题意:

给一个序列和一些区间,每次询问对区间所有不同的数,求每个不同的出现的个数的平方*其值的总和

2*2*1+1*1*2

思路:

裸的莫队算法。

补:

1.cmp写错。

2.LL运算不会进行转化。

3.莫队的起始应该直接先处理好L,R。

卡了将近2.5h,水题让自己很生气。以及不会查错误真的撒比!

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long LL;
  4. typedef pair<int,int> PII;
  5. const int N=1e6+10;
  6. LL num[N],res[N],c[N];
  7. struct asd
  8. {
  9. int id,left,right;
  10. }e[200010];
  11. int pos[200010];
  12. int n,m;
  13.  
  14. bool cmp(asd x,asd y)
  15. {
  16. if(pos[x.left]==pos[y.left])
  17. return x.right<y.right;
  18. return pos[x.left]<pos[y.left];
  19. }
  20.  
  21. LL ans;
  22. void solve()
  23. {
  24. ans=0;
  25. sort(e,e+m,cmp);
  26. for(int i=e[0].left;i<=e[0].right;i++)
  27. {
  28. ans=ans+(2*num[c[i]]+1)*c[i];
  29. num[c[i]]++;
  30. }
  31. res[e[0].id]=ans;
  32. int L=e[0].left,R=e[0].right;
  33. for(int i=1; i<m; i++)
  34. {
  35. while(R<e[i].right)
  36. {
  37. R++;
  38. ans=ans+((num[c[R]]<<1)+1)*c[R];
  39. num[c[R]]++;
  40. }
  41. while(R>e[i].right)
  42. {
  43. num[c[R]]--;
  44. ans=ans-((num[c[R]]<<1)+1)*c[R];
  45. R--;
  46. }
  47. while(L<e[i].left)
  48. {
  49. num[c[L]]--;
  50. ans=ans-((num[c[L]]<<1)+1)*c[L];
  51. L++;
  52. }
  53. while(L>e[i].left)
  54. {
  55. L--;
  56. ans=ans+((num[c[L]]<<1)+1)*c[L];
  57. num[c[L]]++;
  58. }
  59. res[e[i].id]=ans;
  60. }
  61. for(int i=0; i<m; i++)
  62. printf("%I64d\n",res[i]);
  63. }
  64.  
  65. int main()
  66. {
  67. scanf("%d%d",&n,&m);
  68. int block=(int)sqrt(n);
  69. for(int i=1;i<=n;i++)
  70. {
  71. scanf("%I64d",&c[i]);
  72. pos[i]=(i-1)/block+1;
  73. }
  74. for(int i=0;i<m;i++)
  75. {
  76. scanf("%d%d",&e[i].left,&e[i].right);
  77. e[i].id=i;
  78. }
  79. solve();
  80. return 0;
  81. }

Codeforces86D【莫队算法】的更多相关文章

  1. [Codeforces86D]Powerful array(莫队算法)

    题意:定义K[x]为元素x在区间[l,r]内出现的次数,那么它的贡献为K[x]*K[x]*x 给定一个序列,以及一些区间询问,求每个区间的贡献 算是莫队算法膜版题,不带修改的 Code #includ ...

  2. NBUT 1457 莫队算法 离散化

    Sona Time Limit:5000MS     Memory Limit:65535KB     64bit IO Format: Submit Status Practice NBUT 145 ...

  3. BZOJ 2038: [2009国家集训队]小Z的袜子(hose) [莫队算法]【学习笔记】

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 7687  Solved: 3516[Subm ...

  4. NPY and girls-HDU5145莫队算法

    Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description ...

  5. Codeforces617 E . XOR and Favorite Number(莫队算法)

    XOR and Favorite Number time limit per test: 4 seconds memory limit per test: 256 megabytes input: s ...

  6. Bzoj 2038---[2009国家集训队]小Z的袜子(hose) 莫队算法

    题目链接 http://www.lydsy.com/JudgeOnline/problem.php?id=2038 Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色 ...

  7. 【BZOJ-3052】糖果公园 树上带修莫队算法

    3052: [wc2013]糖果公园 Time Limit: 200 Sec  Memory Limit: 512 MBSubmit: 883  Solved: 419[Submit][Status] ...

  8. 莫队算法 2038: [2009国家集训队]小Z的袜子(hose)

    链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2038 2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 ...

  9. Codeforces 617E XOR and Favorite Number(莫队算法)

    题目大概说给一个序列,多次询问区间异或和为k的连续子序列有多少个. 莫队算法,利用异或的性质,通过前缀和求区间和,先处理出序列各个前缀和,然后每次区间转移时维护i以及i-1前缀和为某数的个数并增加或减 ...

随机推荐

  1. 【题解】P4886快递员

    [题解]P4886 快递员 淀粉质好题!!!加深了我对点分治的理解.最近分治学了好多啊. 题目大意 给定你一颗有边权的树,再给你\(m\)和点对,请你在树上选出来一个点,使得所有点对到这个点的距离的最 ...

  2. 流畅python学习笔记第十八章:使用asyncio包处理并发(一)

    首先是线程与协程的对比.在文中作者通过一个实例分别采用线程实现和asynchio包实现来比较两者的差别.在多线程的样例中,会用到join的方法,下面来介绍下join方法的使用. 知识点一:当一个进程启 ...

  3. 设计模式 - 单件模式(singleton pattern) 具体解释

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u012515223/article/details/28595349 单件模式(singleton ...

  4. SAP 第四代增强-BTE

    第四代BTE实例详解:http://blog.csdn.net/wbin9752/article/details/7954922 第三代增强(BADI实例详解) :http://blog.csdn.n ...

  5. Java中的迭代迭代器Iterator与枚举器Enumeration

    Iterator 和 Enumeration区别 Iterator 和 Eumberation都是Collection集合的遍历接口,我们先看下他们的源码接口 package java.util; p ...

  6. Swift 烧脑体操(三) - 高阶函数

    前言 Swift 其实比 Objective-C 复杂很多,相对于出生于上世纪 80 年代的 Objective-C 来说,Swift 融入了大量新特性.这也使得我们学习掌握这门语言变得相对来说更加困 ...

  7. P3715 [BJOI2017]魔法咒语

    P3715 [BJOI2017]魔法咒语 用基本词汇组成\(L\)长度的单词,其中不能包含禁忌词汇 用禁忌词汇建强大的\(tire\)图 解决: 分类讨论,\(L<=100\)用普通dp暴力在\ ...

  8. 转载:Java知多少(8)类库及其组织结构

    转载地址:http://www.cnblogs.com/Coda/p/4346151.html Java知多少(8)类库及其组织结构 Java 官方为开发者提供了很多功能强大的类,这些类被分别放在各个 ...

  9. 吴恩达机器学习笔记(八) —— 降维与主成分分析法(PCA)

    主要内容: 一.降维与PCA 二.PCA算法过程 三.PCA之恢复 四.如何选取维数K 五.PCA的作用与适用场合 一.降维与PCA 1.所谓降维,就是将数据由原来的n个特征(feature)缩减为k ...

  10. java语言中Object对象的hashCode()取值的底层算法是怎样实现的

    Java语言中,Object对象有个特殊的方法:hashcode(), hashcode()表示的是JVM虚拟机为这个Object对象分配的一个int类型的数值,JVM会使用对象的hashcode值来 ...