任意门:https://www.lydsy.com/JudgeOnline/problem.php?id=2038

题意概括:

有 N 只袜子(分别编号为1~N),有 M 次查询 (L, R)里面随机拿两只袜子,拿到相同颜色袜子的概率是多少。

解题思路:

莫队算法经典题,暴力找出区间内相同颜色的袜子的个数,排列组合最后得出结果。

入门题,当模版。

AC code:

 #include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#define LL long long
using namespace std; const int MAXN = 5e4+;
int pos[MAXN], c[MAXN];
LL s[MAXN], res;
int N, M, L = , R = ; LL gcd(LL a, LL b){return b==?a:gcd(b, a%b);}
LL sqr(LL x){return x*x;}
struct date{
int l, r, id;
LL so, mo;
}q[MAXN];
bool cmp(date a, date b){
if(pos[a.l]==pos[b.l]) return a.r < b.r;
return a.l < b.l;
}
bool CMP(date a, date b){
return a.id < b.id;
}
void Update(int x, int add)
{
//res-=sqr(s[c[x]]);
res-=s[c[x]]*s[c[x]];
s[c[x]]+=add;
res+=s[c[x]]*s[c[x]];
//res+=sqr(s[c[x]]);
} int main()
{
scanf("%d%d", &N, &M);
int sz = sqrt(N);
for(int i = ; i <= N; i++){
scanf("%d", &c[i]);
//pos[i] = (i-1)/sz+1;
pos[i] = i/sz;
}
for(int i = ; i <= M; i++){
scanf("%d%d", &q[i].l, &q[i].r);
q[i].id = i;
}
sort(q+, q+M+, cmp);
for(int i = ; i <= M; i++){
while(R < q[i].r){R++; Update(R, );}
while(R > q[i].r){Update(R, -); R--;}
while(L < q[i].l){Update(L, -); L++;}
while(L > q[i].l){L--; Update(L, );}
if(q[i].l == q[i].r){
q[i].so = ;q[i].mo = ;
continue;
}
q[i].so = res-(q[i].r-q[i].l+);
q[i].mo = (LL)(q[i].r-q[i].l+)*(q[i].r-q[i].l);
LL k = gcd(q[i].so, q[i].mo);
q[i].so/=k;q[i].mo/=k;
}
sort(q+, q+M+, CMP);
for(int i = ; i <= M; i++){
printf("%lld/%lld\n", q[i].so, q[i].mo);
}
return ;
}

BZOJ 2038: [2009国家集训队]小Z的袜子(hose) 【莫队算法模版】的更多相关文章

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

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

  2. Bzoj 2038: [2009国家集训队]小Z的袜子(hose) 莫队,分块,暴力

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

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

    莫队..先按sqrt(n)分块, 然后按块的顺序对询问排序, 同块就按右端点排序. 然后就按排序后的顺序暴力求解即可. 时间复杂度O(n1.5) --------------------------- ...

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

    这里跟曼哈顿最小生成树没有太大的关系. 时间复杂度证明: [BZOJ2038 小Z的袜子 AC代码] 排序方式: 第一关键字:l所在的块: 第二关键字:r从小到大. #include<cstdi ...

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

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

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

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

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

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

  8. BZOJ 2038: [2009国家集训队]小Z的袜子 (莫队)

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

  9. 【bzoj2038】[2009国家集训队]小Z的袜子(hose) 莫队算法

    原文地址:http://www.cnblogs.com/GXZlegend/p/6803860.html 题目描述 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终 ...

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

    要使用莫队算法前提 ,已知[l,r]的答案,要能在logn或者O(1)的时间得到[l+1,r],[l-1,r],[l,r-1],[l,r+1],适用于一类不修改的查询 优美的替代品——分块将n个数分成 ...

随机推荐

  1. opensuse13.1 安装 SqliteMan

    Sqliteman是一个图形界面的sqliteman客户端 官网  http://www.sqliteman.com/ 1 添加源 http://download.opensuse.org/repos ...

  2. TOJ 1023 Taxi Cab Scheme

    Description Running a taxi station is not all that simple. Apart from the obvious demand for a centr ...

  3. C++ Memory System Part2: 自定义new和delete

    在第一部分中,我们介绍了new / delete的具体用法和背后的实现细节,这次我们将构建我们自己的小型工具集,可以使用我们自定义的allocator类来创建任意类型的实例(或者实例数组),我们需要做 ...

  4. Whu 1604——Play Apple——————【博弈】

    Problem 1604 - Play Apple Time Limit: 1000MS   Memory Limit: 65536KB   Total Submit: 442  Accepted: ...

  5. popchain与对应poc的构造分析

    本文首发于:https://mp.weixin.qq.com/s?__biz=MjM5MTYxNjQxOA==&mid=2652850238&idx=1&sn=6f22d8ab ...

  6. UML建模概述

    UML的组成主要有事物.图.关系. UML中的事物: (1)构件事物:UML模型的静态部分,描述概念或物理元素,包括以下 a. 类:类是对一组具有相同属性.相同操作.相同关系和相同语义的对象的抽象.包 ...

  7. 运算符重载关键字operator

    operator关键字用来重载内置运算符,使用方法如下: public class OperatorController : Controller { // // GET: /Operator/ pu ...

  8. MVC设置默认页面

    方法1:在RouteConfig.cs文件中配置默认路由 public class RouteConfig { public static void RegisterRoutes(RouteColle ...

  9. 在 Azure Web 应用中创建 PHP 应用程序

    本分步指南将通过 Azure Web 应用帮助您启动并运行示例 PHP 应用程序.除 PHP 外,Azure Web 应用还支持其他语言,如 Java..NET.Node.JS.Python.Ruby ...

  10. 01_JMS概述

    [以前的通信技术的局限性] 在大规模和复杂的分布式系统中,传统的RMI.DCOM等中间件通信技术逐渐有了局限性,如下: 1.同步通信:客户发出调用后,必须等待服务对象完成处理并返回结果才能继续执行. ...