题目: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 ;
}

最新文章

  1. 小规模的流处理框架.Part 1: thread pools
  2. mysql相关文章
  3. AraxisMerge和beyond Compare做git mergetool配置
  4. LightOJ 1341 唯一分解定理
  5. Redis命令
  6. jquery 设置表格奇偶数的颜色和行被选中的颜色样式jquery 设置表格奇偶数的颜色和行被选中的颜色样式
  7. phpstorm
  8. 我理解的 js 的观察者模式 Observable
  9. IntelliJ IDEA的Maven项目在修改时报java.lang.OutOfMemoryError: PermGen space异常
  10. UIWebView执行JS语句
  11. 当PullToRefreshScrollView里面嵌套ListView
  12. Flex 基础语法(三)
  13. Unity如何管理住Android 6.0 调皮的权限
  14. python---01.名片管理系统
  15. 极简Python DeBug工具——PySnooper
  16. Java 10新特性
  17. WebApi中关于base64和jwt的联合验证
  18. 四 sys模块
  19. python读写文件中read()、readline()和readlines()的用法
  20. extjs几个奇怪的错误

热门文章

  1. C 标准库 - &lt;time.h&gt;
  2. 关于C++ 命名空间Namespace 的解析
  3. 重置浏览器的默认样式(css reset)
  4. HTML5开发移动web应用—JQuery Mobile(1)
  5. Swift中的switch 和 do while
  6. qemu-kvm编译错误
  7. caffe搭建--caffe- win10 vs2015 编译(支持GPU)--注意在cmake的时候需要根据情况仔细修改配置
  8. 一起学android之怎样卸载指定的 应用程序(25)
  9. android日历控件
  10. android lanchmode