【题解】Luogu CF86D Powerful array
原题传送门
裸的莫队啊,我博客里有对莫队较详细的介绍
这道题很简单,可以说是裸的模板
但是如何在已有的值上进行操作?
小学生应该都知道^2)
那么转移就超级简单了qaq
inline void add(register int c)
{
sum+=(num[c]+num[c]+1)*c;
++num[c];
}
inline void del(register int c)
{
--num[c];
sum-=(num[c]+num[c]+1)*c;
}
要开long long(虽说我没试过int,但我觉得会炸int)
#include <bits/stdc++.h>
#define N 200005
using namespace std;
inline int read()
{
register int x=0,f=1;register char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+ch-'0',ch=getchar();
return x*f;
}
inline void write(register long long x)
{
if(!x)putchar('0');if(x<0)x=-x,putchar('-');
static int sta[25];int tot=0;
while(x)sta[tot++]=x%10,x/=10;
while(tot)putchar(sta[--tot]+48);
}
struct query{
int l,r,id,bl;
}q[N];
int a[N],blocksize=0,num[1000005];
long long ans[N],sum=0;
inline void add(register int c)
{
sum+=(num[c]+num[c]+1)*c;
++num[c];
}
inline void del(register int c)
{
--num[c];
sum-=(num[c]+num[c]+1)*c;
}
inline bool cmp(register query a,register query b)
{
return a.bl!=b.bl?a.l<b.l:(a.bl&1?a.r<b.r:a.r>b.r);
}
int main()
{
int n=read(),m=read();
blocksize=sqrt(n);
for(register int i=1;i<=n;++i)
a[i]=read();
for(register int i=1;i<=m;++i)
{
int l=read(),r=read();
q[i]=(query){l,r,i,(l-1)/blocksize+1};
}
sort(q+1,q+1+m,cmp);
int l=1,r=0;
for(register int i=1;i<=m;++i)
{
int ll=q[i].l,rr=q[i].r;
while(ll<l)
add(a[--l]);
while(ll>l)
del(a[l++]);
while(rr>r)
add(a[++r]);
while(rr<r)
del(a[r--]);
ans[q[i].id]=sum;
}
for(register int i=1;i<=m;++i)
write(ans[i]),printf("\n");
return 0;
}
【题解】Luogu CF86D Powerful array的更多相关文章
- CF86D Powerful array
题意翻译 题意:给出一个n个数组成的数列a,有t次询问,每次询问为一个[l,r]的区间,求区间内每种数字出现次数的平方×数字的值 的和. 输入:第一行2个正整数n,t. 接下来一行n个正整数,表示数列 ...
- CodeForces - 86D D. Powerful array —— 莫队算法
题目链接:http://codeforces.com/problemset/problem/86/D D. Powerful array time limit per test 5 seconds m ...
- CodeForces 86 D Powerful array 莫队
Powerful array 题意:求区间[l, r] 内的数的出现次数的平方 * 该数字. 题解:莫队离线操作, 然后加减位置的时候直接修改答案就好了. 这个题目中发现了一个很神奇的事情,本来数组开 ...
- Codeforces 86D Powerful array (莫队)
D. Powerful array time limit per test 5 seconds memory limit per test 256 megabytes input standard i ...
- CodeForces 86D Powerful array(莫队+优化)
D. Powerful array time limit per test 5 seconds memory limit per test 256 megabytes input standard i ...
- D. Powerful array 莫队算法或者说块状数组 其实都是有点优化的暴力
莫队算法就是优化的暴力算法.莫队算法是要把询问先按左端点属于的块排序,再按右端点排序.只是预先知道了所有的询问.可以合理的组织计算每个询问的顺序以此来降低复杂度. D. Powerful array ...
- codefroce D. Powerful array[初识块状数组]
codefroce D. Powerful array[初识块状数组] 由于是初始所以,仅仅能先用别人的分析.囧... 题目: 给定一个数列:A1, A2,--,An,定义Ks为区间(l,r)中s出现 ...
- D. Powerful array
D. Powerful array 题意 给定一个数列:a[i] (1<= i <= n) K[j]表示 在区间 [l,r]中j出现的次数.有t个查询,每个查询l,r,对区间内所有a[i] ...
- Yandex.Algorithm 2011 Round 2 D. Powerful array 莫队
题目链接:点击传送 D. Powerful array time limit per test 5 seconds memory limit per test 256 megabytes input ...
随机推荐
- ie8以下兼容圆角等css3的属性
<!--[if lt IE 10]> <script type="text/javascript" src="PIE.js"></ ...
- gedit 没有preference项,使preference回归,并用命令行设置行号,解决centos7下中文乱码,text wrapping等问题
1. 最简单的,使preference选项回来: gsettings set org.gnome.settings-daemon.plugins.xsettings overrides '@a{sv} ...
- color xml arm相关
#-------------------------------------------------------------------------- # C O L O R S #--------- ...
- vue2.0项目中 localhost改成ip地址访问
这里 你可以写成你的ip 那你的项目只能ip访问了,但是写成0.0.0.0的话 你既可已localhost 访问也可以ip访问 也可以写成 127.0.0.1也可以,也能local访问了和ip访问( ...
- python对字典及列表递归排序
对字典内所有内容进行排升序排序,包括,子数组,子字典 需要注意: 1.字典因为是在一定程序上无序的,所以这里采用了内置包,来变成有序字典 from collections import Ordered ...
- UVA 11168 Airport(凸包)
Airport [题目链接]Airport [题目类型]凸包 &题解: 蓝书274页,要想到解析几何来降低复杂度,还用到点到直线的距离公式,之后向想到预处理x,y坐标之和,就可以O(1)查到距 ...
- ES6class
类的方法都定义在prototype对象上面,所以类的新方法可以添加在prototype对象上面.Object.assign方法可以很方便地一次向类添加多个方法. 类的内部所有定义的方法,都是不可枚举的 ...
- AI案列 三条路
在生成点生成带有颜色的小球,小球走对应颜色的路 先做好三个小球,做成预制体 对应颜色的小球,除了自身颜色,其他颜色不要选 新建脚本: using System.Collections; using S ...
- python windows 安装sklearn
- 第一章 CSS基础
1.CSS:层叠样式表 (1)好处:结构样式分离.样式复用.精确控制布局定位.方便搜索引擎搜索(2)用途:美化修饰.布局定位 2.CSS样式表使用方式(3种):(1)内嵌样式[行内样式]:确定到具体元 ...