bzoj 3781 小B的询问——分块
2024-08-30 08:54:33
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3781
非常经典的分块套路。于是时间空间比大家的莫队差了好多……
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define ll long long
using namespace std;
const int N=5e4+,M=;
int n,m,w,base,a[N],cnt[M][N],ct[N];
ll sm[M][M],ans;
int rdn()
{
int ret=;bool fx=;char ch=getchar();
while(ch>''||ch<''){if(ch=='-')fx=;ch=getchar();}
while(ch>=''&&ch<='') ret=(ret<<)+(ret<<)+ch-'',ch=getchar();
return fx?ret:-ret;
}
int bh(int a){return (a-)/base+;}
void init()
{
int R=bh(n);
for(int i=;i<=R;i++)
{
int t=i*base,j=i;
if(t>n)
{
t=(i-)*base;
for(int k=t+;k<=n;k++)
sm[i][i]+=(cnt[i][a[k]]<<)+,cnt[i][a[k]]++;
j=i-;
}
for(;t;j--)
{
sm[i][j]+=sm[i][j+];//
for(int k=;k<=base;k++,t--)
{
sm[i][j]+=(cnt[i][a[t]]<<)+;
cnt[i][a[t]]++;
}
}
}
}
int main()
{
n=rdn(); m=rdn(); w=rdn();
base=sqrt(n);
for(int i=;i<=n;i++)a[i]=rdn();
init();
for(int i=,l,r,u,v;i<=m;i++)
{
l=rdn(); r=rdn(); u=bh(l); v=bh(r);
if(v-u<=)
{
ans=;
for(int j=l;j<=r;j++) ct[a[j]]=;
for(int j=l;j<=r;j++)
ans+=(ct[a[j]]<<)+,ct[a[j]]++;
printf("%lld\n",ans);continue;
}
ans=sm[v-][u+];
int L=u*base,R=(v-)*base;
for(int j=l;j<=L;j++)
{
ans+=((cnt[v-][a[j]]-cnt[u][a[j]])<<)+;
cnt[v-][a[j]]++;
}
for(int j=R+;j<=r;j++)
{
ans+=((cnt[v-][a[j]]-cnt[u][a[j]])<<)+;
cnt[v-][a[j]]++;
}
for(int j=l;j<=L;j++) cnt[v-][a[j]]--;
for(int j=R+;j<=r;j++) cnt[v-][a[j]]--;
printf("%lld\n",ans);
}
return ;
}
最新文章
- 小规模的流处理框架.Part 1: thread pools
- mysql相关文章
- AraxisMerge和beyond Compare做git mergetool配置
- LightOJ 1341 唯一分解定理
- Redis命令
- jquery 设置表格奇偶数的颜色和行被选中的颜色样式jquery 设置表格奇偶数的颜色和行被选中的颜色样式
- phpstorm
- 我理解的 js 的观察者模式 Observable
- IntelliJ IDEA的Maven项目在修改时报java.lang.OutOfMemoryError: PermGen space异常
- UIWebView执行JS语句
- 当PullToRefreshScrollView里面嵌套ListView
- Flex 基础语法(三)
- Unity如何管理住Android 6.0 调皮的权限
- python---01.名片管理系统
- 极简Python DeBug工具——PySnooper
- Java 10新特性
- WebApi中关于base64和jwt的联合验证
- 四 sys模块
- python读写文件中read()、readline()和readlines()的用法
- extjs几个奇怪的错误
热门文章
- C 标准库 - <;time.h>;
- 关于C++ 命名空间Namespace 的解析
- 重置浏览器的默认样式(css reset)
- HTML5开发移动web应用—JQuery Mobile(1)
- Swift中的switch 和 do while
- qemu-kvm编译错误
- caffe搭建--caffe- win10 vs2015 编译(支持GPU)--注意在cmake的时候需要根据情况仔细修改配置
- 一起学android之怎样卸载指定的 应用程序(25)
- android日历控件
- android lanchmode