题目链接   洛古   https://www.luogu.org/problemnew/show/P1494

大概说下自己的理解

先来概率的计算公式   ∑C(2,f(i))  /  C(2,r−l+1)   f(i)是区间每种颜色袜子的数目

最后推出来的式子是 ∑f(i)*f(i)-(r−l+1)/ C(2,r−l+1)  (我也不知道怎么推的.......别人给的);

单纯的暴力就不说了  o(n*n*n);

说下和  o(n*n) 的;

莫队是 o(n*sqrt(n));

o(n*n)的算法 有两种   一是[l,r] 区间里用个小技巧   从头扫到尾   一开始ans=10;

看到第一个 1  我们+0; 看到第二个 1  我们+1; -0;第三1; +3;-1;

每次都   ans1=ans1-sum[a[j]]*(sum[a[j]]-1);   sum[a[j]]++;   ans1=ans1+sum[a[j]]*(sum[a[j]]-1);   莫队也有这个技巧

第二种是区间转移  从[a,b] 到[p, q]  a-〉p  b-q;  按照预先的排序  稍微 比o(n*n) 小一点;

莫队算法

每次区间转移都可能转移  n个数

莫队把(1-n) 分成sqrt块  每块转移       在每块里   最多 sqrt(n)+n  所以最后  sqrt(n)*(n+sqrt(n));

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=5e4+;
int n,m,unit,ans;
int col[maxn],be[maxn],sum[maxn];
struct Mo { int l,r,ID,A,B; }q[maxn];
int S(int x) {return x*x; }
bool cmp(Mo a,Mo b){return be[a.l]==be[b.l]?a.r<b.r:a.l<b.l;}
bool CMP(Mo a,Mo b){return a.ID<b.ID;}
void revise(int x,int add)
{
ans-=S(sum[col[x]]);
sum[col[x]]+=add;
ans+=S(sum[col[x]]);
}
int32_t main()
{
cin>>n>>m; unit=sqrt(n);
for(int i=;i<=n;i++) cin>>col[i],be[i]=i/unit+;
for(int i=;i<=m;i++) cin>>q[i].l>>q[i].r,q[i].ID=i;
sort(q+,q+m+,cmp);
int l=;
int r=;
for(int i=;i<=m;i++)
{
// cout<<q[i].l<<" "<<q[i].r<<endl;
while(l<q[i].l)revise(l,-),l++;
while(l>q[i].l)revise(l-,),l--;
while(r<q[i].r)revise(r+,),r++;
while(r>q[i].r)revise(r,-),r--;
if(q[i].l==q[i].r){q[i].A=;q[i].B=;continue;}
q[i].A=ans-(q[i].r-q[i].l+);
q[i].B=(q[i].r-q[i].l+)*(q[i].r-q[i].l);
int c=__gcd(q[i].A,q[i].B); q[i].A=q[i].A/c; q[i].B=q[i].B/c;
}
sort(q+,q+m+,CMP);
for(int i=;i<=m;i++) printf("%lld/%lld\n",q[i].A,q[i].B);
return ;
}

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

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

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

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

    链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2038 2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 ...

  3. BZOJ2038: [2009国家集训队]小Z的袜子(hose) -- 莫队算法 ,,分块

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

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

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

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

    题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=2038 专题练习: http://acm.hust.edu.cn/vjudge/conte ...

  6. kyeremal-bzoj2038-[2009国家集训队]-小z的袜子(hose)-莫队算法

    id=2038">bzoj2038-[2009国家集训队]-小z的袜子(hose) F.A.Qs Home Discuss ProblemSet Status Ranklist Con ...

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

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

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

    题目传送门 /* 莫队算法:求出[l, r]上取出两只相同袜子的个数. 莫队算法是离线处理一类区间不修改查询类问题的算法.如果你知道了[L,R]的答案,可以在O(1)的时间下得到 [L,R-1]和[L ...

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

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

随机推荐

  1. Win10系列:JavaScript 数据绑定

    使用数据绑定可以使页面中元素的属性值与数据源中的数据同步,其中数据源可以来自数据库.文件以及自定义的数据等.在常用的数据绑定方法中,简单对象绑定是将HTML元素与一个仅包含数据的简单对象相绑定,模板绑 ...

  2. Win10系列:JavaScript 项目模板中的文件和项模板文件

    通过上面内容的学习,相信读者已经对各种项目模板和项模板有了大致的了解,本节将进一步介绍项目模板中默认包含的项目文件以及项模板文件,首先讲解这些文件中的初始内容以及作用,然后介绍在一个页面中如何添加控件 ...

  3. frameset的固定放置模式,不能放入<form runat="server">中

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="admin_default.as ...

  4. WPF 创建自定义控件及自定义事件

    1 创建自定义控件及自定义事件 /// <summary> /// 演示用的自定义控件 /// </summary> public class ExtButton : Butt ...

  5. ural1519

    题解: 插头dp 具体可以看看cdq论文 代码: #include<bits/stdc++.h> using namespace std; typedef long long ll; ; ...

  6. xpath & <tr><td><br>

    python : 3.6 lxml : 4.2.1 from lxml.html import etree test_html = ''' <!DOCTYPE html PUBLIC " ...

  7. 《Python》IO模型

    一.IO模型介绍 为了更好地了解IO模型,我们需要事先回顾下: 同步:一件事情做完再做另一件事情 异步:同时做多件事情 阻塞:sleep.input.join.shutdown.get.acquire ...

  8. node(1) npm是什么?node的异步概念

    NPM是随同的NodeJS一起安装的包管理工具 他可以做什么? 1.可以从NPM服务器下载别人的东西使用 2.可以把自己的东西传到NPM服务器,让别人下载使用 淘宝的镜像会快一点      cnpm ...

  9. caffe blob

    Blob,包括输入数据.输出数据.权值等: Blob是Caffe中处理和传递实际数据的数据封装包,并且在CPU与GPU之间具有同步处理能力.从数学意义上说,blob是按C风格连续存储的N维数组. ca ...

  10. mysql中sql查询使用注意

    1.注意DESC关键字仅适用于在它前面的列名(birth):不影响species列的排序顺序. SELECT name, species, birth FROM pet ORDER BY specie ...