题链:https://vjudge.net/problem/NBUT-1457/origin

题意:求区间内,每个数出现次数x的立方和。

思路:模板题。添加时,由k^3->(k+1)^3,多了3*k^2+3*k+1。删除时,(k+1)^3->k^3,少了3*k^2+3*k+1

#include <cstdio>
#include <algorithm>
#include <cmath>
#define ll long long
using namespace std;
const ll mod = 1e9+7;
const int N = 1e5+10;
int n,m,t,a[N],b[N];
struct node{int l,r,id;
}q[N];
int block,be[N];
int num[N],Id;
ll sum,ans[N];
bool cmp(node a,node b){return (be[a.l]^be[b.l]) ? be[a.l]<be[b.l] : (be[a.l]&1) ? a.r<b.r : a.r>b.r;
}
void add(int x){sum=sum+3LL*num[a[x]]*num[a[x]]+3LL*num[a[x]]+1LL;num[a[x]]++;
}
void del(int x){num[a[x]]--;sum=sum-3LL*num[a[x]]*num[a[x]]-3LL*num[a[x]]-1LL;
}
int main(void){while(~scanf("%d",&n)){block=ceil(sqrt(1.0*n));Id=0;for(int i=1;i<=n;i++){scanf("%d",&a[i]);b[i]=a[i];num[i]=0;be[i]=i/block+1;}sort(b+1,b+1+n);Id = unique(b+1,b+1+n)-(b+1);for(int i=1;i<=n;i++){a[i]=lower_bound(b+1,b+1+Id,a[i]) - b;}       scanf("%d",&m);for(int i=1;i<=m;i++)scanf("%d%d",&q[i].l,&q[i].r),q[i].id=i;sort(q+1,q+1+m,cmp);int l=1,r=0;sum=0;for(int i=1;i<=m;i++){int ql=q[i].l,qr=q[i].r; while(l<ql) del(l++);while(l>ql) add(--l);while(r<qr) add(++r);while(r>qr) del(r--);ans[q[i].id]=sum;}for(int i=1;i<=m;i++)printf("%lld\n",ans[i]);}return 0;
} 

NBUT - 1457 Sona (莫队)相关推荐

  1. NBUT - 1457 Sona 莫队

    NBUT - 1457 Sona 题意: 计算一个区间内每种数出现次数的立方和,那么转移的话,假设一个区间是[L,R],如果向左转移,用ans保存区间的答案,cnt[i]记录第 i 种数出现的次数,那 ...

  2. NBUT 1457 Sona (莫队算法)

    [1457] Sona 时间限制: 5000 ms 内存限制: 65535 K 问题描述 Sona, Maven of the Strings. Of cause, she can play the ...

  3. NBUT 1457 Sona 莫队算法 分块处理

    [1457] Sona 时间限制: 5000 ms 内存限制: 65535 K 问题描述 Sona, Maven of the Strings. Of cause, she can play the ...

  4. NBUT - 1457 Sona (莫队算法)

    点我看题 题意:求某段区间内数字出现次数的立方和. 分析:莫队的模板题,不得不说这题神坑,vj说好的操作系统为Linux呢???结果%I64d才能过== 当然这题不用输入挂其实也能过- #includ ...

  5. Sona NBUT - 1457 (莫队+hash)

    题目:点击此处 题意:求一个区间内出现的数的次数的立方的和 思路:主要不同就是add和remove里的不同 add:当前某个数的出现次数是cnt,如果遇见了这个数,那么先让ans-=cnt*cnt*c ...

  6. NBUT 1457 Sona(莫队算法+离散化)

    [1457] Sona 时间限制: 5000 ms 内存限制: 65535 K 问题描述 Sona, Maven of the Strings. Of cause, she can play the ...

  7. Sona(莫队+离散化)

    Sona, Maven of the Strings. Of cause, she can play the zither. Sona can't speak but she can make fan ...

  8. NBUT 1457 Sona

    莫队算法+离散化 1.map会TLE,必须离散化做 2.long long会WA,__int64定义 %I64d输出输出能AC 3.注意输入的序列会爆int #include<cstdio> ...

  9. NBUT - 1457 Sona

    题目:给你n个数字,m个区间询问,问你区间内每个数出现的次数的立方和 思路:直接莫队搞就好了.输出用%lld会WA,要用%I64d才能A 代码: #pragma comment(linker, &qu ...

  10. NBUT1457 Sona 莫队算法

    由于10^9很大,所以先离散化一下,把给你的这一段数哈希 时间复杂度O(nlogn) 然后就是分块莫队 已知[L,R],由于事先的离散化,可以在O(1)的的时间更新[l+1,r],[l,r+1],[l ...

最新文章

  1. Python可视化应用实战-三万字长文(建议收藏)matplotlib可视化实例,实操有效
  2. 速卖通消费电子行业市场分析热销及需求品类推荐
  3. yarn的基本组成和工作流程
  4. linux之修改dns以及用netmask修改ip和网关
  5. LeetCode 1690. 石子游戏 VII(博弈DP)
  6. 数据结构实验之排序三:bucket sort
  7. 启动wcc显示本地服务器失败,cwrsync server 服务启动失败的解决方法小结
  8. linux SHELL下替代sed、ask的常用字符串处理(截取,判断、替换)
  9. golang使用pprof检查goroutine泄露
  10. hive 操作(二)——使用 mysql 作为 hive 的metastore
  11. 技术管理者工作成效评估表
  12. Swift 使用SwiftyJSON解析JSON数据
  13. 手机也可以接USB摄像头了
  14. 游戏多开原理与解决游戏多开方法。
  15. Python数据分析第四课:数据的处理(数据合并、数据筛选、数据排序)
  16. jsp+servelt+mysql+tomcat 四六级单词查询系统
  17. 量化交易零基础入门教程
  18. 大风车吱呀吱悠悠地转
  19. 关于面试总结1-SQL学生表
  20. 单目标跟踪通过CAM绘制heatmap图像(以SiamCAR为例)

热门文章

  1. android 自动重启测试,检测Android系统重启并生成测试用例的方法与流程
  2. WINDOWS检测U盘插入,拔出
  3. 设计模式(一)----设计模式概述及UML图解析
  4. 搜索引擎使用方法与技巧
  5. 在linux下查看.caj文档
  6. 拉手网的话题检测与跟踪
  7. 优思学院|5S管理在办公室能够推行吗?
  8. html支持草书的字体吗,css怎么设置草书字体
  9. 基础小游戏——猜数字(猜不对有惩罚哟)
  10. 量子计算求解函数因子:Bernstein-Vazirani Algorithm