博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Bzoj3781 小B的询问
阅读量:6268 次
发布时间:2019-06-22

本文共 1224 字,大约阅读时间需要 4 分钟。

 

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

 

裸莫队算法。BZOJ权限题,未评测。

1 /*by SilverN*/ 2 #include
3 #include
4 #include
5 #include
6 #include
7 #define LL long long 8 using namespace std; 9 const int mxn=100001;10 int read(){11 int x=0,f=1;char ch=getchar();12 while(ch<'0' || ch>'9'){
if(ch=='-')f=-1;ch=getchar();}13 while(ch>='0' && ch<='9'){x=x*10+ch-'0';ch=getchar();}14 return x*f;15 }16 struct line{17 int l,r;18 int q;19 int id;20 }a[mxn];21 int cmp(const line a,const line b){22 if(a.q==b.q)return a.r
a[i].l){44 l--;cnt[c[l]]++;res+=2*cnt[c[l]]-1;//相当于(n+1)*(n+1)-n*n45 }46 while(r
a[i].r){53 cnt[c[r]]--;res-=2*cnt[c[r]]+1;r--;54 }55 ans[a[i].id]=res;56 }57 for(i=1;i<=m;i++)printf("%lld\n",ans[i]);58 return 0;59 }

 

转载于:https://www.cnblogs.com/SilverNebula/p/5864981.html

你可能感兴趣的文章
IIS7显示ASP的详细错误信息到浏览器
查看>>
使用fiddler对手机APP进行抓包
查看>>
exit和_exit的区别
查看>>
Javascript、Jquery获取浏览器和屏幕各种高度宽度(单位都为px)
查看>>
php不重新编译,安装未安装过的扩展,如curl扩展
查看>>
JavaScript编码encode和decode escape和unescape
查看>>
ppp点对点协议
查看>>
html5游戏开发-简单tiger机
查看>>
Codeforces 712C Memory and De-Evolution
查看>>
编写的windows程序,崩溃时产生crash dump文件的办法
查看>>
Ural2110 : Remove or Maximize
查看>>
Django REST framework 的TokenAuth认证及外键Serializer基本实现
查看>>
《ArcGIS Runtime SDK for Android开发笔记》——问题集:如何解决ArcGIS Runtime SDK for Android中文标注无法显示的问题(转载)...
查看>>
Spring Boot日志管理
查看>>
动态注册HttpModule管道,实现global.asax功能
查看>>
使用 ES2015 编写 Gulp 构建
查看>>
[转]Using NLog for ASP.NET Core to write custom information to the database
查看>>
BZOJ 4766: 文艺计算姬 [矩阵树定理 快速乘]
查看>>
MySQL 的instr函数
查看>>
Hibernate的核心对象关系映射
查看>>