$SDOI2016Day-1$临时抱佛脚学习一下莫队算法$233$

我预感到自己省选要爆0hhh

#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 50003
#define read(x) x=getint()
#define sqr(x) (x)*(x)
using namespace std;
typedef long long LL;
inline int getint() {
int k = 0, fh = 1; char c = getchar();
for(; c < '0' || c > '9'; c = getchar())
if (c == '-') fh = - 1;
for(; c >= '0' && c <= '9'; c = getchar())
k = k * 10 + c - '0';
return k * fh;
}
struct node {
int id, l, r;
} q[N];
LL sum, fz[N], fm[N], s[N];
int n, a[N], block[N], bel[N], m;
inline bool cmp(node A, node B) {return bel[A.l] == bel[B.l] ? A.r < B.r : A.l < B.l;}
inline void change(int x, int del) {
sum -= sqr(s[x]);
s[x] += del;
sum += sqr(s[x]);
}
inline LL gcd(LL a, LL b) {
return b ? gcd(b, a % b) : a;
}
int main() {
read(n); read(m);
for(int i = 1; i <= n; ++i)
read(a[i]);
for(int i = 1; i <= m; ++i)
read(q[i].l), read(q[i].r), q[i].id = i; int t = ceil(sqrt(n)), tmp = 0, cnt = 0;
for(int i = 1; i <= n; ++i) {
bel[i] = cnt;
++tmp;
if (tmp == t)
tmp = 0, ++cnt;
} sort(q + 1, q + m + 1, cmp); int l = q[1].l, r = q[1].r;
for(int i = l; i <= r; ++i) {
sum -= sqr(s[a[i]]);
++s[a[i]];
sum += sqr(s[a[i]]);
}
fz[q[1].id] = sum - (r - l + 1);
fm[q[1].id] = (r - l) * (r - l + 1);
for(int i = 2; i <= m; ++i) {
int tl = q[i].l, tr = q[i].r, tid = q[i].id;
LL tlen = tr - tl + 1;
while (l < tl) change(a[l++], -1);
while (l > tl) change(a[--l], 1);
while (r < tr) change(a[++r], 1);
while (r > tr) change(a[r--], -1);
fz[tid] = sum - tlen;
fm[tid] = tlen * (tlen - 1);
}
for(int i = 1; i <= m; ++i) {
if (fz[i] <= 0 || fm[i] <= 0)
puts("0/1");
else {
LL tong = gcd(fz[i], fm[i]);
printf("%lld/%lld\n", fz[i] / tong, fm[i] / tong);
}
}
return 0;
}

$so$ $sad$

最新文章

  1. 和efast对接
  2. support HTML5 in IE8
  3. JDK JRE 区别
  4. [SQL]把同一字段里的多行数据用一行显示
  5. hdu 1729 Stone Game 博弈论
  6. 【ADO.NET】3、从TXT中导入数据到数据库
  7. Isim你不得不知道的技巧(整理)
  8. BZOJ 2330 糖果
  9. Linux下svn命令switch用法
  10. [转]ReactJS入门教程
  11. 再谈Android应用瘦身
  12. 使用MegaCli工具,在线调整raid配置
  13. BDA大数据处理流程
  14. EXSI6怎么设置虚拟机从光驱启动
  15. js中select标签中的option选择
  16. python数据结构之希尔排序
  17. spring集成JMS访问ActiveMQ
  18. Answer My Questions
  19. json转化数组
  20. multiMap遍历方法

热门文章

  1. 输出国际象棋&amp;&amp;输出余弦曲线
  2. uva10167 Birthday Cake
  3. window.open与window.close的兼容性问题
  4. Nginx+keepalived双机热备(主主模式)
  5. Centos5.8 安装 ImageMagick 6.8.9-3
  6. SQL SERVER的连接方式
  7. 未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序解决办法
  8. MVC HTTP 错误 403.14 - Forbidden
  9. android中Camera setDisplayOrientation使用
  10. 浅谈设计模式--装饰者模式(Decorator Pattern)