bzoj3781 小B的询问(莫队)
来源:互联网 发布:python自然语言处理库 编辑:程序博客网 时间:2024/05/17 03:00
赤裸裸的莫队。
#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#define N 50005using namespace std;int n,m,k,a[N],f[N],ans=0,block=0,ANS[N];inline int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();}while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();return x*f;}struct query{int l,r,block,id;}q[N];inline bool cmp(query x,query y){return x.block==y.block?x.r<y.r:x.block<y.block;}bool vis[N];void change(int x){ans-=f[a[x]]*f[a[x]];if(vis[x]) f[a[x]]--;else f[a[x]]++;vis[x]^=1;ans+=f[a[x]]*f[a[x]];}int main(){//freopen("a.in","r",stdin);n=read();m=read();k=read();block=sqrt(n);for(int i=1;i<=n;++i) a[i]=read();for(int i=1;i<=m;++i){q[i].l=read();q[i].r=read();q[i].id=i;q[i].block=(q[i].l-1)/block;}sort(q+1,q+m+1,cmp);int l=1,r=0;for(int i=1;i<=m;++i){for(;l<q[i].l;++l) change(l);for(;l>q[i].l;--l) change(l-1);for(;r<q[i].r;++r) change(r+1);for(;r>q[i].r;--r) change(r);ANS[q[i].id]=ans;}for(int i=1;i<=m;++i) printf("%d\n",ANS[i]);return 0;}
阅读全文
0 0
- bzoj3781 小B的询问【莫队】
- [BZOJ3781]小B的询问(莫队)
- [BZOJ3781][小B的询问][莫队]
- bzoj3781 小B的询问 莫队
- bzoj3781 小B的询问(莫队)
- BZOJ3781 小B的询问 莫队
- BZOJ3781小B的询问
- bzoj3781 小B的询问
- BZOJ3781: 小B的询问
- BZOJ3781[小B的询问]
- bzoj3781: 小B的询问
- bzoj3781 小B的询问
- BZOJ3781: 小B的询问
- bzoj3781: 小B的询问 莫队算法
- BZOJ3781 小B的询问 题解&代码 【附莫队总结】
- 【BZOJ3781】小B的询问【莫队算法】
- [bzoj3781]小B的询问 智障莫队
- 【BZOj 3781】小B的询问 莫队
- 微信端唤起腾讯地图并进行导航
- docker基础(一)
- 【CMake】已有项目添加JNI支持
- Storm Topologies 示例——(结合Maven使用storm-starter)
- 06.14 memcached缓存服务
- bzoj3781 小B的询问(莫队)
- Winsock编程流程
- appium +夜神模拟器 java代码sendkeys 无法在模拟器输入中文
- Json学习笔记(三)-前端json字符串互转(4种转换方式)
- Spark的一些操作
- 将txt文本中的图片路径的图片读到某文件夹下
- oracle删除DBF文件
- 重启ORACLE数据库
- linux创建软连接