题目链接:点击查看

题目大意:给出一个由n个数字组成的数列,再给出m次查询,每次查询要求输出[l,r]中的答案,这个题目的答案为:

假设x为区间[l,r]内的数,出现的次数记为cnt[x],则数x的贡献为cnt[x]^2*x,答案为所有不同数字的贡献

题目分析:莫队模板题,直接套模板就行了,对于每增加一个数,那么答案由a^2变为了(a+1)^2=a^2+2*a+1,增加了2*a+1,减少亦是如此,按照这个规则更改一下add函数和del函数就好了

代码:

#include<iostream>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<climits>
#include<cmath>
#include<cctype>
#include<stack>
#include<queue>
#include<list>
#include<vector>
#include<set>
#include<map>
#include<sstream>
#include<unordered_map>
using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=1e6+100;int size,n,m,a[N];LL ans[N],cnt[N];struct query
{int l,r,id;bool operator<(const query& a)const{if(l/size!=a.l/size)return l<a.l;else if((l/size)&1)return r<a.r;elsereturn r>a.r;}
}q[N];LL add(int pos)
{cnt[a[pos]]++;return ((cnt[a[pos]]-1)*2+1)*a[pos];
}LL del(int pos)
{cnt[a[pos]]--;return -((2*cnt[a[pos]]+1)*a[pos]);
}void solve()
{int l=1,r=0;LL sum=0;for(int i=1;i<=m;i++){int ql=q[i].l;int qr=q[i].r;while(l<ql)sum+=del(l++);while(l>ql)sum+=add(--l);while(r<qr)sum+=add(++r);while(r>qr)sum+=del(r--);ans[q[i].id]=sum;}
}int main()
{
//  freopen("input.txt","r",stdin);ios::sync_with_stdio(false);cin>>n>>m;size=sqrt(n);for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=m;i++){cin>>q[i].l>>q[i].r;q[i].id=i;} sort(q+1,q+1+m);solve();for(int i=1;i<=m;i++)cout<<ans[i]<<endl;return 0;
}

CodeForces - 86D Powerful array(莫队)相关推荐

  1. 【打CF,学算法——四星级】CodeForces 86D Powerful array (莫队算法)

    [CF简介] 题目链接:CF 86D 题面: D. Powerful array time limit per test 5 seconds memory limit per test 256 meg ...

  2. CodeForces 86 D Powerful array 莫队

    Powerful array 题意:求区间[l, r] 内的数的出现次数的平方 * 该数字. 题解:莫队离线操作, 然后加减位置的时候直接修改答案就好了. 这个题目中发现了一个很神奇的事情,本来数组开 ...

  3. cf D. Powerful array 莫队算法

    D. Powerful array 题意:给定一个序列>>每次查询一个区间>>查询该区间内 出现过的数字*出现的次数的平方 的和 思路:学习莫队的第一题或者说小z的袜子是第一题 ...

  4. Yandex.Algorithm 2011 Round 2 D. Powerful array 莫队

    题目链接:点击传送 D. Powerful array time limit per test 5 seconds memory limit per test 256 megabytes input ...

  5. Yandex.Algorithm 2011 Round 2 D. Powerful array 莫队算法

    链接: http://codeforces.com/problemset/problem/86/D 题意: 给你一个数组,每次询问一个区间,求对于每个数,算出这个数在这个区间出现的个数的平方再*这个数 ...

  6. Codeforces D. Powerful array(莫队)

    题目描述: Problem Description An array of positive integers a1, a2, ..., an is given. Let us consider it ...

  7. 莫队算法(普通莫队、带修莫队、树上莫队、不删除莫队)学习笔记【理解+套路/核心代码+例题及题解】

    一.理解 我的理解就是巧妙的暴力,利用双指针以及分块思想,巧妙的移动双指针,时间复杂度可以达到O(NlogN). 强推博客:写的又好又全.链接 二.套路 1.普通莫队 [1]核心代码 bool cmp ...

  8. Powerful array CodeForces - 86D (莫队算法)

    An array of positive integers a1, a2, ..., an is given. Let us consider its arbitrary subarray al, a ...

  9. Codeforces 375D - Tree and Queries(dfs序+莫队)

    题目链接:http://codeforces.com/contest/351/problem/D 题目大意:n个数,col[i]对应第i个数的颜色,并给你他们之间的树形关系(以1为根),有m次询问,每 ...

最新文章

  1. mysql一主两从_MySQL 网络延迟参数设置建议
  2. PyQt5 图形界面 - 配置界面跟随窗口大小调整灵活伸缩,设置页面控件居中显示实例演示
  3. github如何删除一个repository【找不到settings】
  4. MyBatis使用动态代理报 invalid bound statement (not found) 错
  5. ALGO-117_蓝桥杯_算法训练_友好数
  6. 2020 前端开源领域技术展望
  7. 判断访问端是否是移动设备
  8. 邮箱附件、QQ、微信等社交工具大文件传输解决方案
  9. 再有人问你什么是ThreadLocal,就把这篇文章甩给他!
  10. 开发 面试_农行软件开发中心实习面试
  11. Bootstrap 滚动监听(Scrollspy)插件
  12. arduino 读取当前时间_Arduino使用DS1302读取时间
  13. 抖音的服务器究竟有多大?
  14. layui 图片剪切/截取
  15. 分享一些java学习网站网址
  16. Establish(扩展ACL)
  17. 插入法、选择法、冒泡法(C++实现)
  18. SpringCloud H版之Eureka学习
  19. day17-李大人part1
  20. LIMS实验室系统建设如何提高检验效率?

热门文章

  1. Nacos如何支撑阿里内部数十万服务注册压力?
  2. 工作中用到的设计模式?
  3. 接口调试利器Postman
  4. doAcquireSharedInterruptibly
  5. 反射_Class对象功能概述
  6. Hive的基本操作-内置函数
  7. 数据库-数据库设计-5个
  8. 用户Session相关模块重构
  9. 享元模式源码解析(jdk+tomcat)
  10. id选择器、标签选择器、类选择器、交集选择器、并集选择器