#3830. 小Z的袜子

小Z的袜子

题目描述

作为一个生活散漫的人,小 ZZ 每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿。

终于有一天,小Z Z 再也无法忍受这恼人的找袜子过程,于是他决定听天由命。

具体来说,小 ZZ 把这 NN 只袜子从 1 到N N 编号,然后从编号L L RR 的袜子中随机选出两只来穿。

尽管小 ZZ 并不在意两只袜子是不是完整的一双,甚至不在意两只袜子是否一左一右,他却很在意袜子的颜色,毕竟穿两只不同色的袜子会很尴尬。

你的任务便是告诉小 ZZ,他有多大的概率抽到两只颜色相同的袜子。

当然,小 ZZ 希望这个概率尽量高,所以他可能会询问多个 (L,RL,R) 以方便自己选择。

输入格式

第一行包含两个正整数N NMNM,N 为袜子的数量,MM 为小Z Z 所提的询问的数量。

接下来一行包含N N 个正整数 CiC_i,其中Ci C_i 表示第i i 只袜子的颜色,相同的颜色用相同的数字表示。

再接下来 MM 行,每行两个正整数 LRL,R 表示一个询问。

输出格式

包含 MM 行,对于每个询问在一行中输出分数A/B A/B 表示从该询问的区间[L,R] [L,R] 中随机抽出两只袜子颜色相同的概率。

若该概率为 0 则输出 0/1,否则输出的 A/BA/B 必须为最简分数。

样例

6 4
1 2 3 3 3 2
2 6
1 3
3 5
1 6
2/5
0/1
1/1
4/15

数据范围

N,M50000,1L<RN,CiNN,M≤50000, 1≤L<R≤N, C_i≤N

来源

  • BZOJ2038
  • 算法竞赛进阶指南