题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2038

题意:给出n个袜子。m个询问,每个询问一个区间[L,R],询问这个区间中任意拿出两个袜子相同的概率。

思路:令x=sqrt(n),每x个分成一组。将询问按照L放到相应的组中。同一组内按照R升序。这样一组内最多向右移动n的长度,向左移动都在本组内,最大x。总复杂度n*sqrt(n)。

struct node
{
    int L,R,id;

node(){}
    node(int _L,int _R,int _id)
    {
        L=_L;
        R=_R;
        id=_id;
    }
};

int a[N],n,m;
vector<node> V[N];

int cmp(node a,node b)
{
    return a.R<b.R;
}

u64 ans[N];
int b[N],L[N],R[N];

u64 C(int x)
{
    return (u64)x*(x-1)/2;
}

u64 Gcd(u64 x,u64 y)
{
    if(!y) return x;
    return Gcd(y,x%y);
}

int main()
{
    RD(n,m);
    int i;
    FOR0(i,n) RD(a[i]);
    int len=sqrt(1.0*n+0.5);
    int s=n/len+(n%len!=0);
    int x,y;
    FOR1(i,m)
    {
        RD(x,y); x--,y--; L[i]=x; R[i]=y;
        V[x/len].pb(node(x,y,i));
    }
    int j,k,curL,curR;
    u64 pre;
    FOR0(i,s)
    {
        clr(b,0); curL=i*len,curR=curL-1; pre=0;
        sort(V[i].begin(),V[i].end(),cmp);
        FOR0(j,SZ(V[i]))
        {
            x=V[i][j].L;
            y=V[i][j].R;
            k=V[i][j].id;
            ans[k]=pre;
            while(curR<y)
            {
                curR++;
                ans[k]-=C(b[a[curR]]);
                b[a[curR]]++;
                ans[k]+=C(b[a[curR]]);
            }
            while(curL<x)
            {
                ans[k]-=C(b[a[curL]]);
                b[a[curL]]--;
                ans[k]+=C(b[a[curL]]);
                curL++;
            }
            while(curL>x)
            {
                curL--;
                ans[k]-=C(b[a[curL]]);
                b[a[curL]]++;
                ans[k]+=C(b[a[curL]]);
            }
            pre=ans[k];
        }

}
    u64 temp,p,q;
    FOR1(i,m)
    {
        p=ans[i];
        q=C(R[i]-L[i]+1);
        temp=Gcd(p,q);
        p/=temp; q/=temp;
        printf("%llu/%llu\n",p,q);
    }
}

BZOJ 2038 小Z的袜子(hose)(分组)的更多相关文章

  1. bzoj 2038 小Z的袜子(hose)(莫队算法)

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

  2. (原创)BZOJ 2038 小Z的袜子(hose) 莫队入门题+分块

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

  3. BZOJ 2038 小Z的袜子(hose) 莫队算法模板题

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=2038 题目大意: 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中 ...

  4. [bzoj] 2038 小Z的袜子(hose) || 莫队

    原题 给出一个序列,求给定[l,r]内有任意取两个数,有多大概率是一样的 简单的莫队,每次+-当前区间里有的这个颜色的袜子的个数,最后除以(r-l+1)*(r-l)/2即可. 记得约分. #inclu ...

  5. BZOJ 2038 小Z的袜子(hose) (莫队算法)

    题意:中文题. 析:很著名的莫队算法,先把这个求概率的式子表达出来,应该是分子:C(x1, 2) + C(x2, 2) + C(x3, 2) + ... + C(xn, 2)  分母:C(n, 2), ...

  6. BZOJ - 2038 小Z的袜子(普通莫队)

    题目链接:小Z的袜子 题意:$n$只袜子,$m$个询问,每次回答有多大概率在$[L,R]$区间内抽到两只颜色相同的袜子 思路:普通莫队,如果两个询问左端点在一个块内,则按询问右端点排序,否则按照所在块 ...

  7. BZOJ 2038 小z的袜子 & 莫队算法(不就是个暴力么..)

    题意: 给一段序列,询问一个区间,求出区间中.....woc! 贴原题! 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过 ...

  8. BZOJ 2038 小z的袜子(莫队)

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

  9. [BZOJ 2038]小Z的袜子

    传送门:BZOJ 2038 题意很明确,是在给定的区间内任意选取两个数,求选到两个相同的数的概率. 所以我们得首先统计在给定的区间内,相同的数对有多少对,那么这里就使用到了莫队算法.如果对莫队算法还不 ...

随机推荐

  1. 【BZOJ】【3894】文理分科

    网络流/最小割 rausen大爷太神辣-作为一个蒟蒻还是搬运题解吧…… 很明显的一道网络流题.. 首先把所有值的加起来,再减掉网络流最小割值就好了,问题就是如何建图.这貌似也是考了好多次了的... 把 ...

  2. 原生js实现中文时钟

    零.寒暄 终于一个月可以更新两篇博客了,开心.昨天花了大概一天的时间玩了下github,基本的clone和push都搞定了,如果有和我一样的新手没调通的,大家可以交流. 另外,说个题外话,大家发现我的 ...

  3. UML组件图(转载)

    概述: 组件图是不同的性质和行为.组件图用于模拟物理方面的系统. 现在的问题是什么,这些物理方面?物理方面的元素,如可执行文件,库,文件,证件等它位于在一个节点. 因此,组件图用于可视化的组织和系统组 ...

  4. 1051: [HAOI2006]受欢迎的牛

    1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2276  Solved: 1190[Submit][Sta ...

  5. HDU 1098 Ignatius's puzzle(数学归纳)

    以下引用自http://acm.hdu.edu.cn/discuss/problem/post/reply.php?postid=8466&messageid=2&deep=1 题意以 ...

  6. appserv安装

    Appserv  官网: http://www.appservnetwork.com/ 安装好后,输入http://localhost:8082/验证是否装成功,成功后如下图

  7. 【poj3691-DNA repair】AC自动机+DP

    题意:给n个病毒DNA序列,再给一个DNA序列,问该序列至少修改多少个碱基能不含任何病毒DNA.病毒DNA序列一共不超过1000,询问的DNA长度不超过1000. 题解:DP:d[l][p]表示询问到 ...

  8. 基于RPC原理的dubbo

    在校期间大家都写过不少程序,比如写个hello world服务类,然后本地调用下,如下所示.这些程序的特点是服务消费方和服务提供方是本地调用关系. 而一旦踏入公司尤其是大型互联网公司就会发现,公司的系 ...

  9. eclipse导入的工程前面有感叹号是什么意思

    1.尤其是从其他地方拷贝来并且直接加载的工程,刚打开往往会看到工程的图标上有个红色的感叹号,这是因为build path 出错了,里面有缺失或者无法找到的包. 2. 原因:显示红色感叹号是因为jar包 ...

  10. 284. Peeking Iterator

    题目: Given an Iterator class interface with methods: next() and hasNext(), design and implement a Pee ...