bzoj 3781: 小B的询问
来源:互联网 发布:翅片管换热器设计软件 编辑:程序博客网 时间:2024/06/05 12:40
3781: 小B的询问
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 593 Solved: 402
[Submit][Status][Discuss]
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
Sample Output
6
9
5
2
HINT
对于全部的数据,1<=N、M、K<=50000
【分析】
裸的无修改莫队
新增莫队算法条件:增减区间暴力扫时可以用题目所给或自己总结出的关系式更新答案
【代码】
//【bzoj3781】小B的询问#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#define fo(i,j,k) for(i=j;i<=k;i++)using namespace std;struct node{ int l,r,id;}q[50001];inline bool comp_l(const node &x,const node &y) {return x.l<y.l;}inline bool comp_r(const node &x,const node &y) {if(x.r==y.r) return x.l<y.l;return x.r<y.r;}int n,m,k,sum;int a[50001],c[50001],ans[50001];inline void add(int x){ c[x]++; sum+=c[x]+c[x]-1;}inline void del(int x){ c[x]--; sum-=(c[x]+c[x]+1);}int main(){ int i,j; scanf("%d%d%d",&n,&m,&k); fo(i,1,n) scanf("%d",&a[i]); fo(i,1,m) { scanf("%d%d",&q[i].l,&q[i].r); q[i].id=i; } sort(q+1,q+m+1,comp_l); i=1;j=0; int x=sqrt(n); while(i<=m) { j++; int b=i; while(q[i].l<=j*x && i<=m) i++; sort(q+b,q+i,comp_r); if(j==x) sort(q+b,q+m+1,comp_r); } int ll=1,rr=0; fo(i,1,m) { if(ll<q[i].l) fo(j,ll,q[i].l-1) del(a[j]); else fo(j,q[i].l,ll-1) add(a[j]); ll=q[i].l; if(rr<q[i].r) fo(j,rr+1,q[i].r) add(a[j]); else fo(j,q[i].r+1,rr) del(a[j]); rr=q[i].r; ans[q[i].id]=sum; } fo(i,1,m) 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的询问(莫队)
- mysql存储过程例子cursor
- const char * 和 char const * 和 char * const 区别
- Mysql主从配置
- centos安装mysql
- Python学习笔记——前言
- bzoj 3781: 小B的询问
- 安装lnmp lamp lnamp环境
- java改变指定字符串的方法
- DDMS测试工具之线程监测
- Spark reduce task数目设置,解决小任务过多slave挂掉
- ActiveMQ内存设置和流控
- 230. Kth Smallest Element in a BST
- 微信支付接口,提示:调用支付jsapi缺少参数: $key0$
- 判断手机号码是否是正确的手机号码