[BZOJ]3781: 小B的询问
来源:互联网 发布:js设置style的left 编辑:程序博客网 时间:2024/06/01 09:21
莫队裸题,连我这种蒟蒻都可以一次AC
#include <cstdio>#include <cmath>#include <algorithm>using namespace std;inline char tc(void){ static char fl[10001],*A=fl,*B=fl; return A==B?B=(A=fl)+fread(fl,1,10000,stdin),A==B?EOF:*A++:*A++; }inline void read(int &a){ a=0;static char c; while((c=tc())<'0'||c>'9'); while(c>='0'&&c<='9') a=a*10+c-'0',c=tc(); return ;}struct Y{ int l,r,h; bool operator <(const Y&a) const { return l<a.l||l==a.l&&r<a.r; }}q[50001];int sl=1,sr,n,m,k,size,z[50001],sum[50001],l[50001],r[50001],now,ans[50001];int main(void){ register int i; read(n),read(m),read(k); for (i=1;i<=n;++i) read(z[i]); size=sqrt(n); for (i=1;i<=m;++i) read(l[i]),read(r[i]),q[i].l=(l[i]-1)/size+1,q[i].r=(r[i]-1)/size+1,q[i].h=i; sort(q+1,q+m+1); for (i=1;i<=m;++i) { while(sr<r[q[i].h]) now+=++sum[z[++sr]]*2-1; while(sr>r[q[i].h]) now-=sum[z[sr--]]--*2-1; while(sl<l[q[i].h]) now-=sum[z[sl++]]--*2-1; while(sl>l[q[i].h]) now+=++sum[z[--sl]]*2-1; ans[q[i].h]=now; } for (i=1;i<=m;++i) printf("%d\n",ans[i]); return 0;}
0 0
- bzoj 3781: 小B的询问
- bzoj 3781: 小B的询问
- BZOJ 3781: 小B的询问
- bzoj 3781: 小B的询问
- BZOJ 3781 小B的询问
- 【BZOj 3781】小B的询问 莫队
- BZOJ 3781小B的询问
- [BZOJ]3781: 小B的询问
- BZOJ 3781: 小B的询问
- BZOJ 3781 小B的询问 莫队
- BZOJ 3781 小B的询问 莫队
- BZOJ 3781 小B的询问 莫队算法
- BZOJ 3781 小B的询问 莫队算法
- BZOJ 3781 小B的询问 序列莫队算法
- bzoj 3781: 小B的询问 莫队算法+分块
- BZOJ 3781: 小B的询问 莫队算法
- bzoj #3781小B的询问(莫队)
- bzoj 3781: 小B的询问(莫队)
- Codeforces Round #266 (Div. 2) C. Number of Ways
- 写在MirrorII开始之前
- 高性能网络编程7--tcp连接的内存使用
- 二分——Poj 3273 Monthly Expense
- 使用bootstrap-fileinput的问题:上传时upload.parseRequest(request)得到的List为空
- [BZOJ]3781: 小B的询问
- Ruby中的面向对象
- 布尔教育2016最新php教程 PHP基础班+PHP大师班视频教程
- 求最大子列和 dp
- 洛谷 P1227 [JSOI2008]完美的对称
- 在Linux下进入目录,在目录中创建文件并显示出来各需要什么权限
- Angularjs refresh but jump to the home page
- 继承 关键字extends
- ubuntu交换caps和ctrl的方法