bzoj3781 小B的询问【莫队】
来源:互联网 发布:知乎 pocket 编辑:程序博客网 时间:2024/05/21 06:38
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3781
题意:中文题。
分析:赤裸裸的莫队
代码:#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<string>#include<vector>#include<queue>#include<cmath>#include<stack>#include<set>#include<map>#define INF 0x3f3f3f3f#define Mn 50005#define Mm 2000005#define mod 1000000007#define CLR(a,b) memset((a),(b),sizeof((a)))#define CPY(a,b) memcpy ((a), (b), sizeof((a)))#pragma comment(linker, "/STACK:102400000,102400000")#define ul u<<1#define ur (u<<1)|1using namespace std;typedef long long ll;int read() { char c; int ans=0,f=1;c=getchar(); while(c<'0'||c>'9') {if(c=='-')f=-1;c=getchar();} while(c>='0'&&c<='9') {ans=ans*10+c-'0';c=getchar();} return ans*f;}struct node { int l,r; int id;}q[Mn];int block;bool cmp(node a,node b) { if(a.l/block==b.l/block) return a.r<b.r; return a.l<b.l;}int a[Mn];ll ans[Mn];int num[Mn];ll sum;void update(int x,int p) { sum+=1+p*2*num[a[x]]; num[a[x]]+=p;}int main() { int n=read(),m=read(),k=read(); CLR(ans,0); CLR(num,0); for(int i=1;i<=n;i++) { a[i]=read(); } block=(int)sqrt(n); for(int i=1;i<=m;i++) { q[i].id=i; q[i].l=read(); q[i].r=read(); } sort(q+1,q+1+m,cmp); sum=0; for(int l=1,r=0,i=1;i<=m;i++) { for(;r<q[i].r;r++) update(r+1,1); for(;r>q[i].r;r--) update(r,-1); for(;l>q[i].l;l--) update(l-1,1); for(;l<q[i].l;l++) update(l,-1); ans[q[i].id]=sum; } 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的询问 莫队
- 区间操作练习
- 关于PreparedStatement.addBatch()方法
- ssm+easyui(框架的搭建)
- php实现基数排序
- cocos-lua 场景切换动画
- bzoj3781 小B的询问【莫队】
- 设计模式--单例模式
- 邮件服务器hMailServer
- HIbernate报should be mapped with insert="false" update="false“错
- STM32的SYSTICK详解
- 程序员保持健康的7个秘诀
- 数据结构--图的理解:深度优先和广度优先遍历及其 Java 实现
- linux常用基本命令之十六 mount unmount
- JVM垃圾回收(GC)原理