CF86D
题解:
莫队分块
分块大小为sqrt(n)
代码:
#include<bits/stdc++.h>
using namespace std;
const int N=;
typedef long long ll;
ll a[N],cnt[N*],ans[N],res;
int n,t,L,R;
struct node{int x,y,l,p;}q[N];
int cmp(const node &x,const node &y)
{
if (x.l==y.l)return x.y<y.y;
return x.l<y.l;
}
void query(int x, int y, int flag)
{
if (flag)
{
for (int i=x;i<L;i++)
{
res+=((cnt[a[i]]<<)+)*a[i];
cnt[a[i]]++;
}
for (int i=L;i<x;i++)
{
cnt[a[i]]--;
res-=((cnt[a[i]]<<)+)*a[i];
}
for (int i=y+;i<=R;i++)
{
cnt[a[i]]--;
res-=((cnt[a[i]]<<)+)*a[i];
}
for (int i=R+;i<=y;i++)
{
res+=((cnt[a[i]]<<)+)*a[i];
cnt[a[i]]++;
}
}
else
for (int i=x;i<=y;i++)
{
res+=((cnt[a[i]]<<)+)*a[i];
cnt[a[i]]++;
}
L=x;R=y;
}
int main()
{
scanf("%d%d",&n,&t);
for (int i=;i<=n;i++)scanf("%I64d", &a[i]);
int block_size=sqrt(n);
for (int i=;i<t;i++)
{
scanf("%d%d",&q[i].x,&q[i].y);
q[i].l=(q[i].x-)/block_size;
q[i].p=i;
}
sort(q,q+t,cmp);
memset(cnt,,sizeof(cnt));
res=;
for (int i=;i<t;i++)
{
query(q[i].x,q[i].y,i);
ans[q[i].p]=res;
}
for (int i=;i<t;i++)printf("%I64d\n",ans[i]);
return ;
}
CF86D的更多相关文章
- 【题解】Luogu CF86D Powerful array
原题传送门 裸的莫队啊,我博客里有对莫队较详细的介绍 这道题很简单,可以说是裸的模板 但是如何在已有的值上进行操作? 小学生应该都知道 那么转移就超级简单了qaq inline void add(re ...
- CF86D Powerful array
题意翻译 题意:给出一个n个数组成的数列a,有t次询问,每次询问为一个[l,r]的区间,求区间内每种数字出现次数的平方×数字的值 的和. 输入:第一行2个正整数n,t. 接下来一行n个正整数,表示数列 ...
- 「CF86D」Powerful array 解题报告
题面 给出一个\(n\)个数组成的数列\(a\),有\(t\)次询问,每次询问为一个\([l,r]\)的区间,求区间内每种数字出现次数的平方×数字的值 的和 思路: 直接上莫队咯 然后就T了 没学过莫 ...
随机推荐
- 让Windows Server 2008 + IIS 7+ ASP.NET 支持10万并发请求 The serverRuntime@appConcurrentRequestLimit setting is being exceeded.
今天下午17点左右,博客园博客站点出现这样的错误信息: Error Summary: HTTP Error 503.2 - Service UnavailableThe serverRuntime@a ...
- 最长括号化长度 java
1:求最长括号, ()(()()( 例如,它的最长符合括号化的长度为4 package com.li.huawei; import java.util.Arrays; import java.util ...
- 整数(质因子)分解(Pollard rho大整数分解)
整数分解,又称质因子分解.在数学中,整数分解问题是指:给出一个正整数,将其写成几个素数的乘积的形式. (每个合数都可以写成几个质数相乘的形式,这几个质数就都叫做这个合数的质因数.) .试除法(适用于范 ...
- MySQL5.7多源复制
MySQL5.7开始支持多源复制,也就是多主一从的复制架构: 使用多源复制的考虑: 1.灾备作用:将各个库汇总在一起,就算是其他库都挂了(整个机房都无法连接了),还有最后一个救命稻草: 2.备份:直接 ...
- cookie、session、sessionid ,jsessionid 的区别
本文是转载虫师博客的文章http://www.cnblogs.com/fnng/archive/2012/08/14/2637279.html cookie.session.sessionid 与js ...
- BCB中换行 需要 \r\n
例如: fprintf(fp,"\n");无换行效果 fprintf(fp,"\r\n");有换行效果
- poj1434 Fill the Cisterns!
地址:http://poj.org/problem?id=1434 题目:Fill the Cisterns! Fill the Cisterns! Time Limit: 5000MS Memo ...
- C Strange Sorting
C. Strange Sorting time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- 【知识总结】Activiti工作流学习入门
1. 我理解的工作流: 在工作中慢慢接触的业务流程,就向流程控制语言一样,一步一步都对应的不同的业务,但整体串联起来就是一个完整的业务.而且实际工作中尤其是在企业内部系统的研发中,确实需要对应许多审批 ...
- CentOS6.5下Cloudera安装搭建部署大数据集群(图文分五大步详解)(博主强烈推荐)
不多说,直接上干货! 第一步: Cloudera Manager安装之Cloudera Manager安装前准备(CentOS6.5)(一) 第二步: Cloudera Manager安装之时间服务 ...