题目:洛谷P1494、BZOJ2038。

题目大意:给你一列袜子的颜色,每次要你求从区间$[L,R]$内随机选两个袜子颜色相同的概率。
解题思路:
首先,对于某个特定区间$[L,R]$,它的概率是$\frac{\sum\limits_{i=1}^{n}\frac{C_i\times (C_i-1)}{2}}{\frac{(R-L+1)\times(R-L)}{2}}$,其中$C_i$表示在$[L,R]$内,颜色$i$的出现次数。
然后,$R-L+1$和$R-L$是可以直接求的。
重点在于求上面那个玩意儿。我们发现,如果$C_i$增加$1$,那么答案将会增加原来的$C_i$(减$1$同理)。
所以我们可以在知道$[L,R]$的答案的情况下,用$O(1)$的时间得到$[L\pm 1,R]$或$[L,R\pm 1]$的答案。
然后莫队即可。

C++ Code:

#include<bits/stdc++.h>
#define belong(i) ((i-1)/sz+1)
#define N 50005
#define ll long long
int n,sz,m,a[N],cnt[N]={0},p[N];
ll ans[N];
inline int readint(){
int c=getchar();
for(;!isdigit(c);c=getchar());
int d=0;
for(;isdigit(c);c=getchar())
d=(d<<3)+(d<<1)+(c^'0');
return d;
}
struct Q{
int l,r,num;
bool operator <(const Q& rhs)const{
if(belong(l)!=belong(rhs.l))return l<rhs.l;
return r<rhs.r;
}
}q[N];
int main(){
n=readint(),m=readint();
sz=int(sqrt(n)+1e-5);
for(int i=1;i<=n;++i)a[i]=readint();
for(int i=1;i<=m;++i)q[i].l=readint(),q[i].r=readint(),q[i].num=i;
std::sort(q+1,q+m+1);
int l=1,r=1;
ll now=0;
++cnt[a[1]];
for(int i=1;i<=m;++i){
while(r<q[i].r)now+=cnt[a[++r]]++;
while(l>q[i].l)now+=cnt[a[--l]]++;
while(r>q[i].r)now-=--cnt[a[r--]];
while(l<q[i].l)now-=--cnt[a[l++]];
p[q[i].num]=r-l+1;
ans[q[i].num]=now;
}
for(int i=1;i<=m;++i){
if(ans[i]==0){
putchar('0'),putchar('/'),putchar('1'),putchar('\n');
continue;
}
int f=p[i];
ll x=std::__gcd(ans[i],(ll)f*(f-1)>>1);
printf("%lld/%lld\n",ans[i]/x,(ll)f*(f-1)/x>>1);
}
return 0;
}

[国家集训队2009]小Z的袜子的更多相关文章

  1. AC日记——[国家集训队2010]小Z的袜子 cogs 1775

    [国家集训队2010]小Z的袜子 思路: 传说中的莫队算法(优雅的暴力): 莫队算法是一个离线的区间询问算法: 如果我们知道[l,r], 那么,我们就能O(1)的时间求出(l-1,r),(l+1,r) ...

  2. 洛谷 1775. [国家集训队2010]小Z的袜子

    1775. [国家集训队2010]小Z的袜子 ★★★   输入文件:hose.in   输出文件:hose.out   简单对比时间限制:1 s   内存限制:512 MB [题目描述] 作为一个生活 ...

  3. 「国家集训队」小Z的袜子

    「国家集训队」小Z的袜子 传送门 莫队板子题. 注意计算答案的时候,由于分子分母都要除以2,所以可以直接约掉,这样在开桶算的时候也方便一些. 参考代码: #include <algorithm& ...

  4. 【BZOJ2038】【2009国家集训队】小Z的袜子(hose) 分块+莫队

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

  5. 数据结构(莫队算法):国家集训队2010 小Z的袜子

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

  6. [国家集训队2010]小Z的袜子

    ★★★   输入文件:hose.in   输出文件:hose.out   简单对比 时间限制:1 s   内存限制:512 MB [题目描述] 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜 ...

  7. 1775. [国家集训队2010]小Z的袜子

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

  8. 【BZOJ 2038】【2009 国家集训队】小Z的袜子(hose) 分块+莫队

    $SDOI2016Day-1$临时抱佛脚学习一下莫队算法$233$ 我预感到自己省选要爆0hhh #include<cmath> #include<cstdio> #inclu ...

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

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

随机推荐

  1. ajax异步上传文件和表单同步上传文件 的区别

    1. 用表单上传文件(以照片为例)-同步上传 html部分代码:这里请求地址index.php <!DOCTYPE html> <html lang="en"&g ...

  2. Project Euler 20 Factorial digit sum( 大数乘法 )

    题意:求出100!的各位数字和. /************************************************************************* > Fil ...

  3. yii rbac管理

    以下是Controller代码 <?php /** * Created by PhpStorm. * User: zhoukang * Date: 2017/6/11 * Time: 19:31 ...

  4. [SharePoint2010开发入门经典]四、开发者常见任务

    本章概要: 1.创建不同种类的web部件,包括标准的,可视化的还有数据绑定web部件 2.理解列和内容类型,如何使用它们创建列表 3.理解如何与SPS交互,使用SPS API调用数据 4.创建编辑页面 ...

  5. 大菲波数 【杭电-HDOJ-1715】 附题+具体解释

    /* 大菲波数 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Su ...

  6. centos编译ffmpeg x264

    1.安装汇编编译器(一般系统自带吧).假设没有依照以下的命令安装吧 yum install yasm 2.使用最新x264源代码编译(仅仅支持编码)    在x264官网下载最新的代码http://w ...

  7. 解决Unity的 The file &#39;MemoryStream&#39; is corrupted! Remove it and launch 崩溃问题

    孙广东   2015.7.30 问题:   在项目平时删除资源或者脚本资源时产生的prefab的脚本引用丢失,特别是在场景scene中丢了解决方式/// 1.又一次Clone项目/// 2.删除项目的 ...

  8. 积跬步,聚小流------Bootstrap学习记录(1)

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/ ...

  9. ym—— Android网络框架Volley(终极篇)

    转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103).谢谢支持! 没看使用过Volley的同学能够,先看看Android网络框架Volley(体验篇)和 ...

  10. DNS递归查询和迭代查询的差别

    转载地址:http://blog.csdn.net/wuchuanpingstone/article/details/6720723 递归查询和迭代查询的差别 (1)递归查询 递归查询是一种DNS s ...