题目链接:http://codeforces.com/problemset/problem/86/D

题目大意:给定一个数组,每次询问一个区间[l,r],设cnt[i]为数字i在该区间内的出现次数,求该区间内所有的cnt[i]^2*i。

解题思路:莫队模板题,改一下add,remove就好了。

  1. #include<iostream>
  2. #include<algorithm>
  3. #include<cmath>
  4. using namespace std;
  5. typedef long long ll;
  6. const int N=2e5+;
  7. const int MAX=1e6+;
  8. int cnt[MAX],arr[N],unit;
  9. ll power,res[N];
  10.  
  11. struct node{
  12. int l,r;
  13. int id;
  14. }q[N];
  15.  
  16. void add(int pos){
  17. power=power+(ll)arr[pos]*(cnt[arr[pos]]<<|);//(a+1)*(a+1)=a*a+2*a+1;
  18. cnt[arr[pos]]++;
  19. }
  20.  
  21. void remove(int pos){
  22. power=power-(ll)arr[pos]*(cnt[arr[pos]]<<-);
  23. cnt[arr[pos]]--;
  24. }
  25.  
  26. bool cmp(node a,node b){
  27. return a.l/unit!=b.l/unit?a.l/unit<b.l/unit:a.r<b.r;
  28. }
  29.  
  30. int main(){
  31. int n,m;
  32. scanf("%d%d",&n,&m);
  33. unit=sqrt(n);
  34. for(int i=;i<=n;i++){
  35. scanf("%d",&arr[i]);
  36. }
  37. for(int i=;i<=m;i++){
  38. scanf("%d%d",&q[i].l,&q[i].r);
  39. q[i].id=i;
  40. }
  41. sort(q+,q++m,cmp);
  42.  
  43. int L=q[].l,R=L-;
  44. for(int i=;i<=m;i++){
  45. while(L>q[i].l)
  46. add(--L);
  47. while(L<q[i].l)
  48. remove(L++);
  49. while(R<q[i].r)
  50. add(++R);
  51. while(R>q[i].r)
  52. remove(R--);
  53. res[q[i].id]=power;
  54. }
  55. for(int i=;i<=m;i++){
  56. printf("%I64d\n",res[i]);
  57. }
  58. }

Codeforces 86D - Powerful array(莫队算法)的更多相关文章

  1. CodeForces - 86D Powerful array (莫队)

    题意:查询的是区间内每个数出现次数的平方×该数值的和. 分析:虽然是道莫队裸体,但是姿势不对就会超时.答案可能爆int,所以要开long long 存答案.一开始的维护操作,我先在res里减掉了a[p ...

  2. D. Powerful array 莫队算法或者说块状数组 其实都是有点优化的暴力

    莫队算法就是优化的暴力算法.莫队算法是要把询问先按左端点属于的块排序,再按右端点排序.只是预先知道了所有的询问.可以合理的组织计算每个询问的顺序以此来降低复杂度. D. Powerful array ...

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

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

  4. CodeForces - 86D D. Powerful array —— 莫队算法

    题目链接:http://codeforces.com/problemset/problem/86/D D. Powerful array time limit per test 5 seconds m ...

  5. codeforces 86D D. Powerful array(莫队算法)

    题目链接: D. Powerful array time limit per test 5 seconds memory limit per test 256 megabytes input stan ...

  6. Codeforces 86D Powerful array (莫队算法)

    题目链接 Powerful array 给你n个数,m次询问,Ks为区间内s的数目,求区间[L,R]之间所有Ks*Ks*s的和. $1<=n,m<=200000,   1<=s< ...

  7. Codeforces 86D Powerful array (莫队)

    D. Powerful array time limit per test 5 seconds memory limit per test 256 megabytes input standard i ...

  8. codeforces 86D,Powerful array 莫队

    传送门:https://codeforces.com/contest/86/problem/D 题意: 给你n个数,m次询问,每次询问问你在区间l,r内每个数字出现的次数的平方于当前这个数的乘积的和 ...

  9. codeforces 86D : Powerful array

    Description An array of positive integers a1, a2, ..., an is given. Let us consider its arbitrary su ...

随机推荐

  1. 洛谷 P2053 [SCOI2007]修车 解题报告

    P2053 [SCOI2007]修车 题目描述 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的.现在需要安排这M位技术 ...

  2. 【loj2033】生成魔咒

    Portal --> loj2033 Solution 这题..虽然说好像也是sam的裸题不过既然在智力康复那就强制后缀数组吧qwq ​ (晚点再用sam写一次qwq) 首先如果是要求本质不同的 ...

  3. (转)C#中“EQUALS”与“==”的速度比较

    结论: true判断时,用"value" == string是最快的:false判断时,用"value".Equals(string)是最快的. 也就是说:一个 ...

  4. dfs.datanode.du.reserved 预留空间不生效的问题

    生产环境(cdh5.5.1)遇到一个问题:已经设置 dfs.datanode.du.reserved预留空间为20G,但是磁盘仍然被写满了. 当挂载磁盘作为datanode的存储空间,如果磁盘大小为2 ...

  5. 数据压缩算法之哈夫曼编码(HUFFMAN)的实现

    HUFFMAN编码可以很有效的压缩数据,通常可以压缩20%到90%的空间(算法导论).具体的压缩率取决于数据的特性(词频).如果采取标准的语料库进行编码,一般可以得到比较满意的编码结果(对不同文件产生 ...

  6. UVA 10479 The Hendrie Sequence

    https://vjudge.net/problem/UVA-10479 打表找规律: 1.根据n可以确定第n项在上表中第i行 2.减去前i-1行,就得到了n在第i行的第j个 3.第i行的规律:1个i ...

  7. hadoop之安全篇

    ---------------持续更新中------------------- hadoop集群安全架构 如下图所示: --------------------------未完待续---------- ...

  8. Milking Cows 挤牛奶

    1.2.1 Milking Cows 挤牛奶 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 554  Solved: 108[Submit][Status ...

  9. 【洛谷 P3690】 【模板】Link Cut Tree (动态树)

    题目链接 \(RT\). FlashHu巨佬的博客 #include <cstdio> #define R register int #define I inline void #defi ...

  10. 2017ACM暑期多校联合训练 - Team 7 1010 HDU 6129 Just do it (找规律)

    题目链接 Problem Description There is a nonnegative integer sequence a1...n of length n. HazelFan wants ...