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

题意:一些袜子排成一排,每个袜子有固定的颜色。
                          每次询问在[l,r]的袜子中等概率选两只,求有多大的概率抽到两只一样颜色的。

思路: 其实 就是 求     莫队维护 一波 cnt[ i ] * cnt[ i ]    就是模板嘛

#include<bits/stdc++.h>
#define LL long long
using namespace std;
int c[],pos[];
LL num[],up[],dw[],ans,u,v,w;
struct note {
int l,r,id;
}a[];
bool cmp(note uu,note vv) {
if(pos[uu.l]==pos[vv.l]) return uu.r<vv.r;
return pos[uu.l]<pos[vv.l];
}
void updat(int x,int d) {
ans-=num[c[x]]*num[c[x]];
num[c[x]]+=d;
ans+=num[c[x]]*num[c[x]];
}
int main() {
int n,q;
scanf("%d %d",&n,&q);
int m=(int)sqrt(n);
for(int i=;i<=n;i++) {
scanf("%d",&c[i]);
pos[i]=(i-)/m;
}
for(int i=;i<=q;i++) {
scanf("%d %d",&a[i].l,&a[i].r); a[i].id=i;
}
sort(a+,a++q,cmp);
int l=;int r=; ans=; memset(num,,sizeof(num));
for(int i=;i<=q;i++) {
int in=a[i].id;
if(a[i].l==a[i].r) {
up[in]=,dw[in]=; continue;
} if(r<a[i].r) {
for(int j=r+;j<=a[i].r;j++) updat(j,);
}
else {
for(int j=r;j>a[i].r;j--) updat(j,-);
}
r=a[i].r; if(l<a[i].l) {
for(int j=l;j<a[i].l;j++) updat(j,-);
}
else {
for(int j=l-;j>=a[i].l;j--) updat(j,);
}
l=a[i].l; u=ans-a[i].r+a[i].l-;
v=(LL)(a[i].r-a[i].l+)*(a[i].r-a[i].l);
w=__gcd(u,v); u/=w; v/=w; up[in]=u; dw[in]=v;
}
for(int i=;i<=q;i++) printf("%lld/%lld\n",up[i],dw[i]);
return ;
}

luogu P1494 [国家集训队]小Z的袜子 ( 普 通 )的更多相关文章

  1. 【luogu P1494 [国家集训队]小Z的袜子】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1494 #include <cstdio> #include <algorithm> ...

  2. Luogu P1494 [国家集训队]小Z的袜子

    比较简单的莫队题,主要是为了熟练板子. 先考虑固定区间时我们怎么计算,假设区间\([l,r]\)内颜色为\(i\)的袜子有\(cnt_i\)只,那么对于颜色\(i\)来说,凑齐一双的情况个数为: \( ...

  3. P1494 [国家集训队]小Z的袜子

    题目 P1494 [国家集训队]小Z的袜子 解析 在区间\([l,r]\)内, 任选两只袜子,有 \[r-l+1\choose2\] \[=\frac{(r-l+1)!}{2!(r-l-1)!}\] ...

  4. P1494 [国家集训队]小Z的袜子/莫队学习笔记(误

    P1494 [国家集训队]小Z的袜子 题目描述 作为一个生活散漫的人,小\(Z\)每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小\(Z\)再也无法忍受这恼人的找袜子过程,于是他 ...

  5. P1494 [国家集训队]小Z的袜子(luogu)

    P1494 小Z的袜子 终于了解了莫队算法(更专业的名称Square Root Decomposition of Queries) 莫队算法: 一般来说解决静态(实际上也有修改的但复杂度更高)的离线( ...

  6. 洛谷 P1494 [国家集训队] 小Z的袜子

    题目概述: 小Z把N只袜子从1到N编号,然后从编号L到R(L 尽管小Z并不在意两只袜子是不是完整的一双,甚至不在意两只袜子是否一左一右,他却很在意袜子的颜色,毕竟穿两只不同色的袜子会很尴尬. 你的任务 ...

  7. P1494 [国家集训队]小Z的袜子(莫队)

    题目链接:https://www.luogu.org/problemnew/show/P1494 题目大意:中文题目 具体思路:计算概率的时候,每一次是区间的移动,每一次移动,记得先将原来的记录的影响 ...

  8. 洛谷 P1494 [国家集训队]小Z的袜子(莫队)

    题目链接:https://www.luogu.com.cn/problem/P1494 一道很经典的莫队模板题,然而每道莫队题的大体轮廓都差不多. 首先莫队是一种基于分块的算法,它的显著特点就是: 能 ...

  9. P1494 [国家集训队]小Z的袜子(莫队算法)

    莫队板子 代码 #include <cstdio> #include <algorithm> #include <cstring> #include <cma ...

随机推荐

  1. 二、python数据类型、字符编码、文件处理

    一. 前言 1. 什么是数据: x = 10,10就是我们要存储的数据 2. 为何数据要分不同的类型 数据是用来表示状态的, 不同的状态就应该用不同类型的数据去表示 3. 数据类型 数字(整型.长整型 ...

  2. 如何理解归一化(Normalization)对于神经网络(深度学习)的帮助?

    如何理解归一化(Normalization)对于神经网络(深度学习)的帮助? 作者:知乎用户链接:https://www.zhihu.com/question/326034346/answer/730 ...

  3. HTTP协议探究(三):HTTPS

    一 复习与目标 1 复习 代理:转发通信数据(一般协议不变,作为中间人,可对报文进行过滤修改) 网关:转发通信数据(协议改变,作为资源拥有者) 隧道:转发通信数据(协议不变,作为管道,不对报文进行过滤 ...

  4. eventFlow 系列 <一> 入门

    var exampleId = ExampleId.New; var commandBus = resolver.Resolve<ICommandBus>(); ,) var execut ...

  5. mysql5.7 密码字段名更改

    由password更改为authentication_string update user set authentication_string=password("123456") ...

  6. XML模块与类的定义

    xml模块 xml介绍: --XML 全称  可扩展标记语言 --<tag></tag>  双标签   标签中间可以加入文本信息 --<tag/>单标签  没有文本 ...

  7. sql 将英文句子中的单词首字母转换为大写

    create function dbo.pTitleCase(@StrIn nvarchar(max))returns nvarchar(max)as begin; declare @StrOut n ...

  8. 变种XSS:持久控制

    变种XSS:持久控制 tig3r · 2015/11/30 10:42 0x00 引言 首先声明,这不是一个新洞,看过 Homakov 文章(最后附)以及译文的人想必对这种漏洞有所了解. 但原文写的太 ...

  9. ASP.NET IHttpModule IHttpHandler IHttpHandlerFactory 拦截请求

    先来看看代码,拦截所有Http请求类.下面包含了两种类的集成 IHttpModule IHttpHandlerFactory using System; using System.Collection ...

  10. C#验证控件使用方法及常用正则表达式例析(转)

    ASP.NET为开发人员提供了一整套完整的服务器控件来验证用户输入的信息是否有效.这些控件如下: 1.RequiredFieldValidator:验证一个必填字段,如果这个字段没填,那么,将不能提交 ...