题目:洛谷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. 使用maven创建springMVC时返回页面报错

    这是由于你的 Maven 编译级别是 jdk1.5 或以下,而你导入了 jdk1.6 以上的依赖包 解决办法: <build> <finalName></finalNam ...

  3. J2EE异常问题总结

    http://blog.csdn.net/rchm8519/article/details/41624381 http://www.51testing.com/html/49/240349-14393 ...

  4. CNN卷机网络在自然语言处理问题上的应用

    首先申明本人的英语很搓,看英文非常吃力,只能用这种笨办法来方便下次阅读.有理解错误的地方,请别喷我. 什么是卷积和什么是卷积神经网络就不讲了,自行google.从在自然语言处理的应用开始(SO, HO ...

  5. CF787A - The Monster

    /* CF787A - The Monster http://codeforces.com/contest/787/problem/A 数学 扩展欧几里得 注意x或y为0的时候要特判 并且结果要大于b ...

  6. [using_microsoft_infopath_2010]Chapter13 SharePoint视图和控制板

    本章概要: 1.规划站点的外观,使用View和web部件 2.为登录进来的用户展示相关的表单. 3.为管理员创建视图 4.从表单中收集到的数据中创建报表

  7. __FUNCTION__, __LINE__ 有助于debug的宏定义

    __FUNCTION__, __LINE__ 今天无意之间看到一段代码,里面有这样一个片段: if (!interface) { err ("%s - error, can't find d ...

  8. layer iframe加载单个图片或者加载页面

    加载单个图片 layer.open({ type: , title: false, closeBtn: , area: '150px', skin: 'layui-layer-nobg', //没有背 ...

  9. Django学习笔记(一)——安装,创建项目,配置

    疯狂的暑假学习之 Django学习笔记(一) 教材  书<The Django Book> 视频:csvt Django视频 1.创建项目 django‐admin.py startpro ...

  10. java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException

    http://blog.csdn.net/you23hai45/article/details/70197502