传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2038

裸的莫队,注意要先移动右端点再移动左端点。

#include <cstdio>
#include <algorithm>
#include <cmath> const int maxn = 50005, maxm = 50005; int n, m, c[maxn], s[maxn], l, r, siz;
long long fenzi[maxm], fenmu[maxm], tem, same;
struct st {
int l, r;
int id;
} q[maxm]; bool cmp(const st & aa, const st & ss) {
if (aa.l / siz == ss.l / siz) {
return aa.r < ss.r;
}
return aa.l / siz < ss.l / siz;
}
inline long long gcd(long long aa, long long ss) {
long long tt;
while (ss) {
tt = aa;
aa = ss;
ss = tt % ss;
}
return aa;
} int main(void) {
//freopen("in.txt", "r", stdin);
scanf("%d%d", &n, &m);
siz = (int)sqrt((float)n + 0.5f);
for (int i = 1; i <= n; ++i) {
scanf("%d", c + i);
}
for (int i = 1; i <= m; ++i) {
scanf("%d%d", &q[i].l, &q[i].r);
q[i].id = i;
}
std::sort(q + 1, q + m + 1, cmp); for (int i = q[1].l; i <= q[1].r; ++i) {
++s[c[i]];
}
for (int i = 0; i <= n; ++i) {
same += (long long)s[i] * (long long)(s[i] - 1) >> 1;
}
l = q[1].l;
r = q[1].r;
fenmu[q[1].id] = (long long)(q[1].r - q[1].l + 1) * (long long)(q[1].r - q[1].l) >> 1;
fenzi[q[1].id] = same;
tem = gcd(fenmu[q[1].id], fenzi[q[1].id]);
fenmu[q[1].id] /= tem;
fenzi[q[1].id] /= tem;
for (int i = 2; i <= m; ++i) {
fenmu[q[i].id] = (long long)(q[i].r - q[i].l + 1) * (long long)(q[i].r - q[i].l) >> 1;
while (r < q[i].r) {
++r;
same += s[c[r]];
++s[c[r]];
}
while (r > q[i].r) {
same += 1 - s[c[r]];
--s[c[r]];
--r;
}
while (l > q[i].l) {
--l;
same += s[c[l]];
++s[c[l]];
}
while (l < q[i].l) {
same += 1 - s[c[l]];
--s[c[l]];
++l;
}
fenzi[q[i].id] = same;
tem = gcd(fenmu[q[i].id], fenzi[q[i].id]);
fenmu[q[i].id] /= tem;
fenzi[q[i].id] /= tem;
}
for (int i = 1; i <= m; ++i) {
printf("%lld/%lld\n", fenzi[i], fenmu[i]);
}
return 0;
}

  

_bzoj2038 [2009国家集训队]小Z的袜子(hose)【莫队】的更多相关文章

  1. BZOJ 2038: [2009国家集训队]小Z的袜子(hose) [莫队算法]【学习笔记】

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 7687  Solved: 3516[Subm ...

  2. Bzoj 2038: [2009国家集训队]小Z的袜子(hose) 莫队,分块,暴力

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 5763  Solved: 2660[Subm ...

  3. BZOJ2038: [2009国家集训队]小Z的袜子(hose) -- 莫队算法 ,,分块

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 3577  Solved: 1652[Subm ...

  4. BZOJ 2038: [2009国家集训队]小Z的袜子(hose) ( 莫队 )

    莫队..先按sqrt(n)分块, 然后按块的顺序对询问排序, 同块就按右端点排序. 然后就按排序后的顺序暴力求解即可. 时间复杂度O(n1.5) --------------------------- ...

  5. [BZOJ2038] [2009国家集训队]小Z的袜子(hose) 莫队算法练习

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 10299  Solved: 4685[Sub ...

  6. bzoj2038: [2009国家集训队]小Z的袜子(hose) [莫队]

    Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命……具体来说,小Z把这N只袜 ...

  7. BZOJ2038[2009国家集训队]小Z的袜子(hose)——莫队

    题目描述 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命……具体来说,小Z把这N只袜子从1到N编号 ...

  8. bzoj 2038: [2009国家集训队]小Z的袜子(hose) (莫队)

    Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命……具体来说,小Z把这N只袜 ...

  9. 【bzoj2038】[2009国家集训队]小Z的袜子(hose) 莫队算法

    原文地址:http://www.cnblogs.com/GXZlegend/p/6803860.html 题目描述 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终 ...

  10. [bzoj2038][2009国家集训队]小Z的袜子(hose)——莫队算法

    Brief Description 给定一个序列,您需要处理m个询问,每个询问形如[l,r],您需要回答在区间[l,r]中任意选取两个数相同的概率. Algorithm Design 莫队算法入门题目 ...

随机推荐

  1. 通过k8s(Kubernetes)搭建jmeter的压测环境master-slave架构,实现弹性伸缩

    在k8s上部署jmeter的mater和slave,根据压测需求动态增减master和slave节点数量,即可以完成压测任务,又可以是资源利用最大化 https://blog.kubernauts.i ...

  2. asp.net core 集成JWT(二)token的强制失效,基于策略模式细化api权限

    [前言] 上一篇我们介绍了什么是JWT,以及如何在asp.net core api项目中集成JWT权限认证.传送门:https://www.cnblogs.com/7tiny/p/11012035.h ...

  3. 电脑控制手机的另一选择——android vnc server

    近来发现的Android上的原生VNC Server,就是说只要手机上安装并运行这个软件,即可实现电脑上查看并控制手机了. 首先是手机端. 1)下载androidvncserver: http://c ...

  4. [转]JS 引擎的执行机制

    转: https://www.cnblogs.com/wancheng7/p/8321418.html ------------------------------------------------ ...

  5. Java中常见的排序算法

    这是我摘取的一段英文资料.我认为学习算法之前,对各种排序得有个大致的了解: Sorting algorithms are an important part of managing data. At ...

  6. POJ 2545+2591+2247+1338简单水题

    [题意简述]:就是有这种一个序列.就拿当p1 = 2,p2 = 3, p3 = 5,来举例.由这三个数为基准组成的序列是: 2,3,4,5,6,8,9,10,12--如今给你这个序列数组的下标,让你求 ...

  7. 开发:异常收集之 DB2建表相关问题

    第一次用DB2数据库,因为考虑到建表语句可能不一样,所以採用手动建表的办法.一个个字段去填.并勾选主键.最后发现创建失败.看了下系统生成的sql语句 sql语句例如以下: CREATE TABLE F ...

  8. Random-随机生成电话号

    package test1; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; ...

  9. Unity构造函数注入代码示例

    Unity构造函数注入代码示例 如果使用 Unity 实例化一个类,该类的构造函数依赖一个或多个其他类,则 Unity 会为构造函数自动创建参数中指定的被依赖的类的实例.例如,下面的代码展示了一个名为 ...

  10. 小贝_mysql优化学习

    mysql优化 简要: 1.数据库设计优化 2.sql语句优化 3.表切割 4.读写分离技术 一.数据库设计优化 1.表设计要符合三范式.当然,有时也须要适当的逆范式 2.什么是三范式 一范式: 具有 ...