解题关键:莫队最重要的是区间之间以$O(1)$的复杂度进行转化,由于电脑原因,后续补上公式推导。

 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<iostream>
#include<cmath>
using namespace std;
typedef long long ll;
ll n,m,ans;
struct node{
ll l,r,id;
}b[];
struct nd{
ll a,b;
}as[];
ll a[],pos[],s[]; bool cmp1(const node &a,const node &b){
return ((pos[a.l]==pos[b.l])&&(a.r<b.r))||(pos[a.l]<pos[b.l]);
} void init(){
ll block=sqrt(n);
for(int i=;i<=n;i++) pos[i]=(i-)/block+;
} void update(ll p,ll add){
/*ans-=s[a[p]]*s[a[p]];
s[a[p]]+=add;
ans+=s[a[p]]*s[a[p]];*/
ans+=*add*s[a[p]]+(add==?:);
s[a[p]]+=add;
} void solve(){
for(int i=,l=,r=;i<=m;i++){
for(;r<b[i].r;r++) update(r+,);
for(;r>b[i].r;r--) update(r, -);
for(;l<b[i].l;l++) update(l, -);//这里注意搞清楚
for(;l>b[i].l;l--) update(l-,);
if(b[i].l==b[i].r){
as[b[i].id].a=,as[b[i].id].b=;//题目要求
continue;
}
ll c=ans;
ll d=(b[i].r-b[i].l+)*(b[i].r-b[i].l);
ll k=__gcd(c,d);
c/=k,d/=k;
as[b[i].id].a=c,as[b[i].id].b=d;
}
}
int main(){
cin>>n>>m;
for(int i=;i<=n;i++) cin>>a[i];
for(int i=;i<=m;i++){
cin>>b[i].l>>b[i].r;
b[i].id=i;
}
init();
sort(b+,b+m+,cmp1);
solve();
for(int i=;i<=m;i++){
cout<<as[i].a<<"/"<<as[i].b<<"\n";
}
}

最新文章

  1. Elastic学习第一天遇到的问题以及添加的一些操作
  2. Redis安装和配置
  3. asp.net生成缩略图
  4. ZOJ 1241 Geometry Made Simple
  5. Chp4: Trees and Graphs
  6. Java学习笔记之:Java StringBuffer类
  7. iBeacon开发
  8. 检查mysql数据库是否存在坏表脚本
  9. [转]C++智能指针的创建
  10. 简单的mvc之一:简单的开始
  11. allegro 导Gerber文件
  12. scroll抖动问题
  13. Tomcat 组件介绍
  14. Oracle 存储过程以及存储函数
  15. AUC计算 - 进阶操作
  16. 多线程——C++
  17. 前端入门5-CSS弹性布局flex
  18. esp8266 免费wifi强推广告神器(0) 项目介绍
  19. windows命令行(DOS批处理)添加任务计划
  20. 在Ubuntu 12.04 上为Virtualbox 启用USB 设备支持

热门文章

  1. HDU - 3081 Marriage Match II 【二分匹配】
  2. iOS 发大招 otherButtonTitles:(nullable NSString *)otherButtonTitles, ... 写法 &amp;&amp; 编写通用类的时候关于可变参数的处理
  3. iOS 屏幕原点坐标 &amp;&amp; 导航栏风格的自定义
  4. Java多线程系列 JUC锁07 ConditionObject分析
  5. [原创]java WEB学习笔记01:javaWeb之tomcat的安装和配置
  6. &lt;Perl算法小菜&gt;排序加速--Schwatzian变换及Guttman-Rosler变换
  7. 系统安装记录 install OS
  8. 剑指offer之 二叉搜索树与双向链表
  9. jupyter- 运维
  10. MATLAB卷积运算(conv、conv2)解释