【题目大意】
给出1-N只袜子的颜色,多次询问L-R中选出一双同色袜子的概率。

【思路】

裸莫队。基本的莫队步骤:
①分组(每组大小为根号sqrt(n),共sqrt(n)组)
②排序(左边界分组,右边界在组内按大小排序)
③暴力转移

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int MAXN=+;
typedef long long ll;
struct node
{
int l,r,id,pos;
ll ansa,ansb;
};
int n,m,c[MAXN];
ll ans=,s[MAXN];
ll sqr(ll x){return x*x;}
node q[MAXN]; ll gcd(ll a,ll b)
{
if (b==) return a;
else return gcd(b,a%b);
} bool cmp(node a,node b)
{
if (a.pos==b.pos) return (a.r<b.r);
else return (a.pos<b.pos);
} bool cmp_id(node a,node b)
{
return (a.id<b.id);
} void update(int x,int delta)
{
ans-=sqr(s[c[x]]);
s[c[x]]+=delta;
ans+=sqr(s[c[x]]);
} void init()
{
memset(s,,sizeof(s));
memset(c,,sizeof(c));
scanf("%d%d",&n,&m);
for (int i=;i<=n;i++) scanf("%d",&c[i]);
int block=int(sqrt(n));
for (int i=;i<m;i++)
{
scanf("%d%d",&q[i].l,&q[i].r);
q[i].id=i;
q[i].pos=(q[i].l-)/block+;
}
sort(q,q+m,cmp);
} void solve()
{
int l=,r=;
s[c[]]=,ans=sqr(s[c[]]);
for (int t=;t<m;t++)
{
for (;r<q[t].r;r++) update(r+,);
for (;r>q[t].r;r--) update(r,-);
for (;l<q[t].l;l++) update(l,-);
for (;l>q[t].l;l--) update(l-,);
if (l==r)
{
q[t].l=;q[t].r=;
continue;
}
q[t].ansa=ans-(r-l+);
q[t].ansb=(ll)(r-l+)*(r-l);
ll minx=min(q[t].ansa,q[t].ansb),maxx=max(q[t].ansa,q[t].ansb);
ll k=gcd(maxx,minx);
q[t].ansa/=k,q[t].ansb/=k;
}
} void print()
{
sort(q,q+m,cmp_id);
for (int i=;i<m;i++) printf("%lld/%lld\n",q[i].ansa,q[i].ansb);
} int main()
{
init();
solve();
print();
return ;
}

【序列莫队】BZOJ2038- [2009国家集训队]小Z的袜子(hose)的更多相关文章

  1. E. XOR and Favorite Number 莫队 2038: [2009国家集训队]小Z的袜子(hose)

    一直都说学莫队,直到现在才学,训练的时候就跪了   T_T,其实挺简单的感觉.其实训练的时候也看懂了,一知半解,就想着先敲.(其实这样是不好的,应该弄懂再敲,以后要养成这个习惯) 前缀异或也很快想出来 ...

  2. BZOJ2038 2009国家集训队 小Z的袜子(hose) 【莫队】

    BZOJ2038 2009国家集训队 小Z的袜子(hose) Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼 ...

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

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

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

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

  5. [bzoj2038][2009国家集训队]小Z的袜子(hose)_莫队

    小Z的袜子 hose 2009-国家集训队 bzoj-2038 题目大意:给定一个n个袜子的序列,每个袜子有一个颜色.m次询问:每次询问一段区间中每种颜色袜子个数的平方和. 注释:$1\le n,m\ ...

  6. bzoj2038: [2009国家集训队]小Z的袜子(hose) [莫队]

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

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

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

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

    Brief Description 给定一个序列,您需要处理m个询问,每个询问形如[l,r],您需要回答在区间[l,r]中任意选取两个数相同的概率. Algorithm Design 莫队算法入门题目 ...

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

    神奇的莫队算法,用来解决可离线无修改的区间查询问题: 首先对原序列进行分块,√n块每块√n个: 然后对所有查询的区间[l,r]进行排序,首先按l所在的块序号升序排序,如果一样就按r升序排序: 最后就按 ...

随机推荐

  1. Windows Server 2008 R2英文版修改桌面主题(Win7主题)

    1:首先打开Server Manager(凡是不知道在那里开发均可像Win7一样在运行里面搜索) 2:然后在左边的树形菜单中选择:Feature 点击右边页面中的:Add Features 这时候会出 ...

  2. It is possible that this issue is resolved by uninstalling an existi

    使用真机连接Android Studio测试时出现这样的错误: 解决方法: 设置Android Studio 中Instant Run中的选项为不选中 根据以下路径,找到Instant Run中的选项 ...

  3. cart回归树算法过程

    回归树:使用平方误差最小准则 训练集为:D={(x1,y1), (x2,y2), …, (xn,yn)}. 输出Y为连续变量,将输入划分为M个区域,分别为R1,R2,…,RM,每个区域的输出值分别为: ...

  4. 结合BeautyEye开源UI框架实现的较美观的Java桌面程序

    BeautyJavaSwingRobot 结合BeautyEye开源UI框架实现的较美观的Java桌面程序,主要功能就是图灵机器人和一个2345网站万年历的抓取.... 挺简单而且实用的一个项目,实现 ...

  5. Python3 生成器

    生成器(genetor): 1>生成器只有在调用的时候才会生成相应的数据: 2>生成器只记录当前位置,有一个__next__()方法 3>yield可以实现单线程先的并发运算 1.列 ...

  6. android studio 64位手机+Fresco引起的在arm64位机器上找不到对应的so库

    我们的程序在32位机器上没有问题,有一天公司采购了一台魅族MX5 MTK的64位处理器上我们的应用报错了 "nativeLibraryDirectories=[/data/app/com.l ...

  7. [linux]通过ssh远程设定各服务器时间,从而实现集群时间同步

    #!/usr/bin/env bash #all hosts should to sync time, all hosts should no password login echo other sy ...

  8. [How to]基于本地镜像的yum镜像源搭建

    1.简介 本文介绍如何在封闭环境(无外网)下安装离线安装本地镜像与基于本地镜像的yum镜像源. 2.环境版本交代: OS:CentOS-6.7-x86_64-minimal yum: yum-3.2. ...

  9. Oracle简述

    Oracle是甲骨文公司推出的一款大型数据库管理系统.甲骨文公司成立于1977年,总部位于美国加利福尼亚州的红木滩.1989年,Oracle正式进入中国市场:2013年,甲骨文超越 IBM ,成为继 ...

  10. Hibernate检索策略与检索方式

    hibernate的Session在加载Java对象时,一般都会把鱼这个对象相关联的其他Java对象也都加载到缓存中,以方便程序的调用.但很多情况下,我们不需要加载太多无用的对象到缓存中,一来会占用大 ...