Description

作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿。终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命……
具体来说,小Z把这N只袜子从1到N编号,然后从编号L到R(L 尽管小Z并不在意两只袜子是不是完整的一双,甚至不在意两只袜子是否一左一右,他却很在意袜子的颜色,毕竟穿两只不同色的袜子会很尴尬。
你的任务便是告诉小Z,他有多大的概率抽到两只颜色相同的袜子。当然,小Z希望这个概率尽量高,所以他可能会询问多个(L,R)以方便自己选择。

Solution

把询问按照左端点排序,块内按照右端点排序;

(l,r)的答案转移到(l+1,r)/(l-1,r)/(l,r+1)/(l,r-1)只需要O(1)的时间,所以总的时间复杂度是O(n^1.5)【黄学长blog有时间复杂度的分析 hzwer】

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#define MAXN 50005
typedef long long LL;
using namespace std;
int n,m,unit,col[MAXN],num[MAXN];
LL ans=0;
struct Node{int l,r,id;LL a,b;
}q[MAXN];
int Read()
{int x=0,f=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}return x*f;
}
bool cmp(Node A,Node B)
{if(A.l/unit!=B.l/unit)return A.l/unit<B.l/unit;return A.r<B.r;
}
bool cmp_id(Node A,Node B)
{return A.id<B.id;
}
LL gcd(LL a,LL b)
{if(!b)return a;return gcd(b,a%b);
}
void update(int x,int add)
{ans-=num[col[x]]*(num[col[x]]-1);num[col[x]]+=add;ans+=num[col[x]]*(num[col[x]]-1);
}
void work()
{int L=1,R=0;for(int i=0;i<m;i++){while(q[i].l<L)update(L-1,1),L--;while(q[i].l>L)update(L,-1),L++;while(q[i].r<R)update(R,-1),R--;while(q[i].r>R)update(R+1,1),R++;if(q[i].l==q[i].r){q[i].a=0,q[i].b=1;continue;}q[i].a=ans;q[i].b=(LL)(R-L+1)*(R-L);LL k=gcd(q[i].a,q[i].b);q[i].a/=k,q[i].b/=k;}
}
int main()
{n=Read();m=Read();unit=sqrt(n);for(int i=0;i<n;i++)col[i]=Read();for(int i=0;i<m;i++){q[i].l=Read()-1;q[i].r=Read()-1;q[i].id=i;}sort(q,q+m,cmp);work();sort(q,q+m,cmp_id);for(int i=0;i<m;i++){printf("%lld/%lld\n",q[i].a,q[i].b);}return 0;
} 

转载于:https://www.cnblogs.com/Zars19/p/6681508.html

[BZOJ 2038][2009国家集训队]小Z的袜子(hose)(莫队)相关推荐

  1. 2038: [2009国家集训队]小Z的袜子(hose)+莫队入门

    题目链接:2038: [2009国家集训队]小Z的袜子(hose) 题目: Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再 ...

  2. BZOJ 2038: [2009国家集训队]小Z的袜子(莫队算法例题)

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

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

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MB Submit: 9894  Solved: 4561 [Su ...

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

    分块大法好 2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MB Submit: 2938  Solved: 13 ...

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

    莫队也是暴力的一种,不过可以很有效的降低复杂度 如果我们已知[l, r]的答案,能在O(1)时间得到[l+1,r]的答案以及[l, r-1]的答案,即可使用莫队算法. 时间复杂度为O(n^1.5).如 ...

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

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2038 莫队算法可以解决一类不修改.离线查询问题.而这题可以用莫队来做. *我是看这个论文学 ...

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

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

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

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

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

    Time Limit: 20 Sec Memory Limit: 259 MB Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小 ...

最新文章

  1. skiller v3 beta2_S10全球总决赛:赛前叫嚣却遭打脸!V3被LGD踢出S10,日本撸友彻底炸锅:真是悲哀...
  2. 清华大学最新研制的自行车“成精”了!“天机”在全球顶尖期刊“泄露”
  3. 你说 Arthas 诊断问题不好用?watch 命令了解多少?
  4. linux 退出服务器_Vue实战091:Vue项目部署到nginx服务器
  5. 对话行癫:解密阿里云顶层设计和底层逻辑
  6. Openwrt上配置Aria2迅雷离线下载步骤
  7. 【转】Linux 静态库与共享库的使用
  8. mysql导入的excel更新_excel导入数据库,存在则更新不存在添加
  9. C#LeetCode刷题之#819-最常见的单词(Most Common Word)
  10. Tree(树分治入门)
  11. 实现Kubernetes跨集群服务应用的高可用
  12. Hybrid Astar 算法剖析和实现(五)
  13. log4j.xml配置文件详解
  14. 安卓蓝牙BluetoothBLE开发JDY-10M
  15. 电脑如何打开软键盘,教大家Win10如何打开软键盘的方法
  16. redis的zset为什么用调表不用红黑树
  17. HTML5七夕情人节表白网页制作【樱花雨+爱心3D相册】HTML+CSS+JavaScript
  18. mac创建.开头的文件夹
  19. 太乐地图下载器5.0.5(破解版)
  20. 团宝网股权太分散融资难加夫妻店管理诟病

热门文章

  1. java练习:打印 数字1、2、3、4的组合,不能以4开头,1和3不能相邻,且数字不能重复
  2. 鸿蒙操作系统在使用了吗,【图片】华为鸿蒙系统的厉害之处在于 你可能非用不可 !【手机吧】_百度贴吧...
  3. python运维脚本部署jdk_Jenkins自动执行Python脚本,并输出测试报告
  4. php cc攻击代码,php cc攻击代码与防范方法
  5. android广播intent原理,Android中BroadcastReceiver详解
  6. axure怎样24位bmp输出_平衡(非平衡)输入输出的无源变压器前级放大器
  7. 测试一款CSDN免费下载软件
  8. 智能车竞赛技术报告 | 智能车视觉 - 温州大学- 春华秋实
  9. 对比BF245、2SK30A,2SK160A与2SK241对于150kHz导航信号放大关系
  10. ceph 代码分析 读_Ceph OSD磁盘异常流量问题分析