NBUT - 1457 Sona (莫队)
题链: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 (莫队)相关推荐
- NBUT - 1457 Sona 莫队
NBUT - 1457 Sona 题意: 计算一个区间内每种数出现次数的立方和,那么转移的话,假设一个区间是[L,R],如果向左转移,用ans保存区间的答案,cnt[i]记录第 i 种数出现的次数,那 ...
- NBUT 1457 Sona (莫队算法)
[1457] Sona 时间限制: 5000 ms 内存限制: 65535 K 问题描述 Sona, Maven of the Strings. Of cause, she can play the ...
- NBUT 1457 Sona 莫队算法 分块处理
[1457] Sona 时间限制: 5000 ms 内存限制: 65535 K 问题描述 Sona, Maven of the Strings. Of cause, she can play the ...
- NBUT - 1457 Sona (莫队算法)
点我看题 题意:求某段区间内数字出现次数的立方和. 分析:莫队的模板题,不得不说这题神坑,vj说好的操作系统为Linux呢???结果%I64d才能过== 当然这题不用输入挂其实也能过- #includ ...
- Sona NBUT - 1457 (莫队+hash)
题目:点击此处 题意:求一个区间内出现的数的次数的立方的和 思路:主要不同就是add和remove里的不同 add:当前某个数的出现次数是cnt,如果遇见了这个数,那么先让ans-=cnt*cnt*c ...
- NBUT 1457 Sona(莫队算法+离散化)
[1457] Sona 时间限制: 5000 ms 内存限制: 65535 K 问题描述 Sona, Maven of the Strings. Of cause, she can play the ...
- Sona(莫队+离散化)
Sona, Maven of the Strings. Of cause, she can play the zither. Sona can't speak but she can make fan ...
- NBUT 1457 Sona
莫队算法+离散化 1.map会TLE,必须离散化做 2.long long会WA,__int64定义 %I64d输出输出能AC 3.注意输入的序列会爆int #include<cstdio> ...
- NBUT - 1457 Sona
题目:给你n个数字,m个区间询问,问你区间内每个数出现的次数的立方和 思路:直接莫队搞就好了.输出用%lld会WA,要用%I64d才能A 代码: #pragma comment(linker, &qu ...
- NBUT1457 Sona 莫队算法
由于10^9很大,所以先离散化一下,把给你的这一段数哈希 时间复杂度O(nlogn) 然后就是分块莫队 已知[L,R],由于事先的离散化,可以在O(1)的的时间更新[l+1,r],[l,r+1],[l ...
最新文章
- Python可视化应用实战-三万字长文(建议收藏)matplotlib可视化实例,实操有效
- 速卖通消费电子行业市场分析热销及需求品类推荐
- yarn的基本组成和工作流程
- linux之修改dns以及用netmask修改ip和网关
- LeetCode 1690. 石子游戏 VII(博弈DP)
- 数据结构实验之排序三:bucket sort
- 启动wcc显示本地服务器失败,cwrsync server 服务启动失败的解决方法小结
- linux SHELL下替代sed、ask的常用字符串处理(截取,判断、替换)
- golang使用pprof检查goroutine泄露
- hive 操作(二)——使用 mysql 作为 hive 的metastore
- 技术管理者工作成效评估表
- Swift 使用SwiftyJSON解析JSON数据
- 手机也可以接USB摄像头了
- 游戏多开原理与解决游戏多开方法。
- Python数据分析第四课:数据的处理(数据合并、数据筛选、数据排序)
- jsp+servelt+mysql+tomcat 四六级单词查询系统
- 量化交易零基础入门教程
- 大风车吱呀吱悠悠地转
- 关于面试总结1-SQL学生表
- 单目标跟踪通过CAM绘制heatmap图像(以SiamCAR为例)