题意

给出包含n个数字的序列,和m个查询。每次查询问区间[l,r]中挑选出两个数字,大小相同的概率为多少。

分析

莫队的入门题吧。代码是非常好写,关键是时间复杂度的证明。O(n*sqrt(n))。我还有点迷糊,等我再做几个题再说···

 #include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <cmath> using namespace std;
typedef long long LL;
const int maxn=+;
int val[maxn],belong[maxn],f[maxn];
int n,m,cnt,block;
LL gcd(LL a,LL b){
if(!b)return a;
return gcd(b,a%b);
} struct Node{
int L,R,id;
bool operator<(const Node& rhs)const{
return belong[L]<belong[rhs.L]||(belong[L]==belong[rhs.L]&&R<rhs.R);
}
LL a,b;
void solve(){
LL r=gcd(a,b);
a/=r,b/=r;
}
}ask[maxn];
int cmp(Node a,Node b){
return a.id<b.id;
}
LL ans;
void update(int p,int addv){
ans=ans+*addv*f[val[p]]+;
f[val[p]]+=addv;
} int main(){
scanf("%d%d",&n,&m);
memset(f,,sizeof(f));
for(int i=;i<=n;i++)
scanf("%d",&val[i]);
block=sqrt(n);
cnt=n/block;
if(n%block)cnt++;
for(int i=;i<=n;i++){
belong[i]=(i-)/block+;
}
for(int i=;i<=m;i++){
scanf("%d%d",&ask[i].L,&ask[i].R);
ask[i].id=i;
} sort(ask+,ask++m);
ans=;
int l=,r=;
for(int i=;i<=m;i++){
if(r<ask[i].R){
for(r=r+;r<ask[i].R;r++){
update(r,);
}
update(r,);
}
if(l>ask[i].L){
for(l=l-;l>ask[i].L;l--){
update(l,);
}
update(l,);
}
if(r>ask[i].R){
for(;r>ask[i].R;r--){
update(r,-);
}
}
if(l<ask[i].L){
for(;l<ask[i].L;l++){
update(l,-);
}
}
if(ask[i].L==ask[i].R){
ask[i].a=,ask[i].b=;
continue;
}
ask[i].a=ans-(ask[i].R-ask[i].L+),ask[i].b=(LL)(ask[i].R-ask[i].L+)*(ask[i].R-ask[i].L);
ask[i].solve();
}
sort(ask+,ask++m,cmp);
for(int i=;i<=m;i++){
printf("%lld/%lld\n",ask[i].a,ask[i].b);
}
return ;
}

【BZOJ2038】小Z的袜子【莫队】的更多相关文章

  1. BZOJ2038 小Z的袜子 莫队

    BZOJ2038 题意:q(5000)次询问,问在区间中随意取两个值,这两个值恰好相同的概率是多少?分数表示: 感觉自己复述的题意极度抽象,还是原题意有趣(逃: 思路:设在L到R这个区间中,x这个值得 ...

  2. [国家集训队][bzoj2038] 小Z的袜子 [莫队]

    题面: 传送门 思路: 又是一道标准的莫队处理题目,但是这道题需要一点小改动:求个数变成了求概率 我们思考:每次某种颜色从i个增加到i+1个,符合要求的情况多了多少? 原来的总情况数是i*(i-1)/ ...

  3. 【填坑向】bzoj2038小Z的袜子 莫队

    学莫队必做题,,,但是懒得写.今天来填个坑 莫队水题 莫队实际上就是按一个玄学顺序来离线计算询问,保证复杂度只会多一个n1/2,感觉是玄学(离线算法都很玄学) 易错点:要开long long(卡我半天 ...

  4. BZOJ2038 小Z的袜子(莫队之源)

    题意+思路: 给你m个区间询问,问每个区间内的$\displaystyle \frac{\sum x^2-(R-L+1)}{(R-L)(R-L+1)} $,其中x为每种数字的个数,用cnt存储: 所以 ...

  5. 小Z的袜子 & 莫队

    莫队学习 & 小Z的袜子 引入 莫队 由莫涛巨佬提出,是一种离线算法 运用广泛 可以解决广大的离线区间询问题 莫队的历史 早在mt巨佬提出莫队之前 类似莫队的算法和莫队的思想已在Codefor ...

  6. BZOJ 2038 [2009国家集训队]小Z的袜子 莫队

    2038: [2009国家集训队]小Z的袜子(hose) 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=2038 Descriptionw ...

  7. 【国家集训队2010】小Z的袜子[莫队算法]

    [莫队算法][国家集训队2010]小Z的袜子 Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程, ...

  8. bzoj 2308 小Z的袜子(莫队算法)

    小Z的袜子 [题目链接]小Z的袜子 [题目类型]莫队算法 &题解: 莫队算法第一题吧,建议先看这个理解算法,之后在参考这个就可以写出简洁的代码 我的比第2个少了一次sort,他的跑了1600m ...

  9. P1494 [国家集训队]小Z的袜子/莫队学习笔记(误

    P1494 [国家集训队]小Z的袜子 题目描述 作为一个生活散漫的人,小\(Z\)每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小\(Z\)再也无法忍受这恼人的找袜子过程,于是他 ...

  10. BZOJ2038 [2009国家集训队]小Z的袜子 莫队+分块

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

随机推荐

  1. WPF绘制简单常用的Path(转)

    写代码出身的我们经常需要使用一些简单 但是不是规则图形的Path 但限于美工功底有限 不知道怎么去画 下面我告诉大家一些简单的小技巧 用代码来画Path 个人还是比较喜欢用代码 因为数值控制的更精细 ...

  2. grpc gateway 使用以及docker compose 集成

    1. grpc gateway 安装 参考,比较简单,有需要的依赖可以参考相资料 mkdir tmp cd tmp git clone https://github.com/google/protob ...

  3. minio 安装以及使用

    1. 为了方便使用 docker 安装 docker run -p 9000:9000 minio/minio server /export   注意启动显示的 appkey secretkey  C ...

  4. linux-docker安装

    https://yeasy.gitbooks.io/docker_practice/content/install/centos.html

  5. RESTful的一个样例

    后台代码: @RequestMapping(value = { "queues" }) @ResponseBody public List<ResourcePool> ...

  6. Java列表分页查询结果导出到CSV文件,导入CSV文件并解析

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...

  7. 深入理解jQuery框架-框架结构

    这是本人结合资料视频总结出来的jQuery大体框架结构,如果大家都熟悉了之后,相信你们也会写出看似高档的js框架: jquery框架的总体结构 (function(w, undefined){ //定 ...

  8. appium+python自动化37-adb shell模拟点击事件(input tap)

    前言 appium有时候定位一个元素很难定位到,或者说明明定位到这个元素了,却无法点击,这个时候该怎么办呢? 求助大神是没用的,点击不了就是点击不了,appium不是万能的,这个时候应该转换思路,换其 ...

  9. ThreadPoolExecutor之三:自定义线程池-扩展示例

    ThreadPoolExecutor是可扩展的,下面一个示例: package com.dxz.threadpool.demo1; import java.util.concurrent.Blocki ...

  10. [转][Java]Jsp入门

    <% response.getOutputStream().write("123".getBytes()); %> 新建一个 Web Project 项目,jsp 文件 ...