bzoj 3781: 小B的询问
来源:互联网 发布:hptv手机电视软件 编辑:程序博客网 时间:2024/06/05 18:05
Description
小B有一个序列,包含N个1~K之间的整数。他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重复次数。小B请你帮助他回答询问。
Input
第一行,三个整数N、M、K。
第二行,N个整数,表示小B的序列。
接下来的M行,每行两个整数L、R。
Output
M行,每行一个整数,其中第i行的整数表示第i个询问的答案。
Sample Input
6 4 3
1 3 2 1 1 3
1 4
2 6
3 5
5 6
1 3 2 1 1 3
1 4
2 6
3 5
5 6
Sample Output
6
9
5
2
9
5
2
HINT
对于全部的数据,1<=N、M、K<=50000
同小Z的袜子。。莫队乱搞
#include<cmath>#include<cstdio>#include<algorithm>using namespace std;struct question{ int l,r; long long a,b; int x;}ask[50001];int a[50001],s[50001];int pos[50001];long long ans;inline bool cmp1(question x,question y){ if(pos[x.l]==pos[y.l]) { if(x.r<y.r) return true; return false; } if(x.l<y.l) return true; return false;}inline bool cmp2(question x,question y){ if(x.x<y.x) return true; return false;}inline void update(int x,int xx){ ans-=s[a[x]]*s[a[x]]; s[a[x]]+=xx; ans+=s[a[x]]*s[a[x]];}int main(){ int n,m,k; scanf("%d%d%d",&n,&m,&k); int i; int space=sqrt(n); for(i=1;i<=n;i++) scanf("%d",&a[i]); for(i=1;i<=m;i++) { scanf("%d%d",&ask[i].l,&ask[i].r); ask[i].x=i; } for(i=1;i<=n;i++) pos[i]=(i-1)/space+1; sort(ask+1,ask+1+m,cmp1); int l=1,r=0; for(i=1;i<=m;i++) { while(r<ask[i].r) { r++; update(r,1); } while(r>ask[i].r) { update(r,-1); r--; } while(l<ask[i].l) { update(l,-1); l++; } while(l>ask[i].l) { l--; update(l,1); } ask[i].a=ans; } sort(ask+1,ask+1+m,cmp2); for(i=1;i<=m;i++) printf("%lld\n",ask[i].a); 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的询问(莫队)
- Python无法导入自己编写的模块(Win7)
- 因为你在,才有我最好的年华
- ZZU校赛总结 (loser的感想)
- C语言--指针用法详解
- ym—— Android 5.0学习之定义阴影
- bzoj 3781: 小B的询问
- Leetcode:Find Peak Element
- RGB空间与HSV空间的相互转换(C++实现,修正网上大多数的代码错误)
- UVa 540 - Team Queue
- Android项目中引用到其他工程
- 扫描二维码自动识别手机APP下载地址
- VS2010下Bundler的使用以及cygwin的配置
- 构建C协程之setjmp/long_jmp篇
- 优秀链接收集