【题解】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 ...
随机推荐
- nginx 长连接keeplive
发现后台日志打印太多 FD打开太多的日志. 处理思路: 修改nginx upstream的长连接 http://blog.csdn.net/gzh0222/article/details/852363 ...
- MongoDB--编译文件
-j 加你的cpu核数来加速编译过程 编译出错可以自行安装所需依赖. 或者去官网直接下载编译好的二进制,直接执行. 编译好之后查看文件: mongod:mongodb的执行程序,数据库部署也用这个程序 ...
- MySQL--4操作数据表中的记录小结
最常用,最复杂的语句: 每一项的: 表的参照 From 条件 WHERE 进行记录的分组 GROUP BY 分组的时候对分组的条件进行设定 HAVING 对结果进行排序 ORDER BY ...
- Xception网络结构理解
Xception网络是由inception结构加上depthwise separable convlution,再加上残差网络结构改进而来/ 常规卷积是直接通过一个卷积核把空间信息和通道信息直接提取出 ...
- Hadoop书单词
Hadoop fundamentals :Hadoop原理 英 [ˌfʌndə'mentlz] 美 [ˌfʌndə'mentlz] n.原理; 基本原则,基本法则( fundamental的名词复数) ...
- Java之.jdk安装-Linux
Jdk安装-Linux 1. 使用管理员,创建一个用户(charles),指令:useradd charles 2. 给创建的用户,添加密码(密码自己指定),指令:passwd charles 注意: ...
- c# Mongodb创建自增列
MongoCollection<BsonDocument> tblCount; if (!db.CollectionExists(tblCountName)) { ...
- Beta冲刺1.0
1. 提供当天站立式会议照片一张 2. 每个人的工作 (有work item 的ID) 3. 发布项目燃尽图 4. 每人的代码/文档签入记录 (1)代码签入记录 (2)代码签入链接 链接1 链 ...
- factory源码分析——component_registry和object_registry
registry类主要是为object和component提供一个轻量级的代理(lightweight proxy)来方便factory实现: registry class从uvm_object_wr ...
- <1>lua编译环境 数据类型和局部变量
1.编译环境 http://www.lua.org/download.html下载 解压后 bin目录中lua.exe运行 luac.exe编译成lua字节码 2.基本数据类型 整数,小数,布尔值 ...