bzoj 3781 小B的询问 —— 莫队
2024-08-29 06:22:39
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3781
就是莫队,左端点分块排序,块内按右端点排序,然后直接做即可。
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long ll;
int const xn=5e4+;
int n,m,k,cnt[xn],d[xn],blk[xn],a[xn];
ll sum,ans[xn];
struct N{int l,r,id;}q[xn];
bool cmp(N x,N y){return blk[x.l]==blk[y.l]?x.r<y.r:blk[x.l]<blk[y.l];}
int rd()
{
int ret=,f=; char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=; ch=getchar();}
while(ch>=''&&ch<='')ret=(ret<<)+(ret<<)+ch-'',ch=getchar();
return f?ret:-ret;
}
void add(int ps)
{
int x=a[ps];
sum-=(ll)cnt[x]*cnt[x];
cnt[x]++;
sum+=(ll)cnt[x]*cnt[x];
}
void del(int ps)
{
int x=a[ps];
sum-=(ll)cnt[x]*cnt[x];
cnt[x]--;
sum+=(ll)cnt[x]*cnt[x];
}
int main()
{
n=rd(); m=rd(); k=rd(); int bs=sqrt(n);
for(int i=;i<=n;i++)a[i]=rd(),blk[i]=(i-)/bs+;
for(int i=;i<=m;i++)q[i].l=rd(),q[i].r=rd(),q[i].id=i;
sort(q+,q+m+,cmp); add();
for(int i=,l=,r=;i<=m;i++)
{
int ql=q[i].l,qr=q[i].r;
while(l<ql)del(l),l++;
while(l>ql)l--,add(l);
while(r<qr)r++,add(r);
while(r>qr)del(r),r--;
ans[q[i].id]=sum;
}
for(int i=;i<=m;i++)printf("%lld\n",ans[i]);
return ;
}
最新文章
- Owin的URL编码怎么搞?以前都是HttpUtility.UrlEncode之类的,现在连system.web都没了,肿么办?
- 20145205 《Java程序设计》第7周学习总结
- 检索 COM 类工厂中 CLSID 解决办法
- Node.js Express 框架
- Java RMI 介绍和例子以及Spring对RMI支持的实际应用实例
- ubunutu_install_sublime_china
- #ifdef _cplusplus (转)
- web services 接口测试方法
- const关键字与指针
- ImageView设置点击效果没有用?ImageView src的图片大小改变不了?
- 论山寨手机与Android联姻的技术基础 【序】
- c++,static 静态成员变量 / 静态成员函数
- (中等) CF 576D Flights for Regular Customers (#319 Div1 D题),矩阵快速幂。
- 理解 dispatch_get_specific
- 两个排序链表的合并(Easy)
- vue使用element-ui 监听使用回车键事件
- 转载:安装Ubuntu 15.10后要做的事
- multer中间件
- cat命令合并多个txt文件
- (转)WAMP多站点配置
热门文章
- [Kubernetes]Volume
- [CTSC2007]数据备份Backup 题解
- HDU3572:Task Schedule【最大流】
- bzoj3514 Codechef MARCH14 GERALD07加强版 lct预处理+主席树
- Method, apparatus and system for acquiring a global promotion facility utilizing a data-less transaction
- msp430项目编程24
- DTrace C++ Mysteries Solved 转
- [WinForm]DataGridView列头右键菜单
- BloomFilter学习
- SecureCRT5 中文乱码