【bzoj2038】[国家集训队2010]小Z的袜子 莫队
莫队:就是一坨软软的有弹性的东西Duang~Duang~Duang~
为了防止以左端点为第一关键字以右端点为第二关键字使右端点弹来弹去,所以让左端点所在块为关键字得到O(n1.5)的时间效率,至于分块的优化,根本用不到。
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<iostream>
#define MAXN 50005
using namespace std;
typedef long long LL;
struct Query
{
LL l,r,a,b,id;
}query[MAXN];
LL pos[MAXN];
int cmp(const Query a,const Query b)
{
return a.id<b.id;
}
int comp(const Query a,const Query b)
{
if(pos[a.l]<pos[b.l])return ;
if(pos[a.l]==pos[b.l]&&a.r<b.r)return ;
return ;
}
LL a[MAXN],s[MAXN],n,m,len,l,r,ans;
LL gcd(LL x,LL y)
{
return y==?x:gcd(y,x%y);
}
inline void did(LL x,LL di)
{
ans-=s[a[x]]*s[a[x]];
s[a[x]]+=di;
ans+=s[a[x]]*s[a[x]];
}
inline void work()
{
for(LL i=;i<=m;i++)
{
while(l<query[i].l)did(l++,-);
while(l>query[i].l)did(--l,);
while(r<query[i].r)did(++r,);
while(r>query[i].r)did(r--,-);
if(l==r)
{
query[i].a=;
query[i].b=;
continue;
}
LL son=ans-(r-l+);
LL mo=(LL)(r-l)*(r-l+);
LL k=gcd(son,mo);
query[i].a=son/k;
query[i].b=mo/k;
}
}
int main()
{
freopen("hose.in", "r", stdin);
freopen("hose.out", "w", stdout);
scanf("%lld%lld",&n,&m);
len=(LL)(sqrt(n+0.5));
l=r=ans=;
for(LL i=;i<=n;i++)
{
scanf("%lld",&a[i]);
pos[i]=(i-)/len+;
}
s[a[]]++;
for(LL i=;i<=m;i++)
{
scanf("%lld%lld",&query[i].l,&query[i].r);
query[i].id=i;
}
sort(query+,query++m,comp);
work();
sort(query+,query+m+,cmp);
for(LL i=;i<=m;i++)
printf("%lld/%lld\n",query[i].a,query[i].b);
return ;
}
【bzoj2038】[国家集训队2010]小Z的袜子 莫队的更多相关文章
- AC日记——[国家集训队2010]小Z的袜子 cogs 1775
[国家集训队2010]小Z的袜子 思路: 传说中的莫队算法(优雅的暴力): 莫队算法是一个离线的区间询问算法: 如果我们知道[l,r], 那么,我们就能O(1)的时间求出(l-1,r),(l+1,r) ...
- 洛谷 1775. [国家集训队2010]小Z的袜子
1775. [国家集训队2010]小Z的袜子 ★★★ 输入文件:hose.in 输出文件:hose.out 简单对比时间限制:1 s 内存限制:512 MB [题目描述] 作为一个生活 ...
- 数据结构(莫队算法):国家集训队2010 小Z的袜子
[题目描述] 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命…… 具体来说,小Z把这N只袜子从1到 ...
- [国家集训队2010]小Z的袜子
★★★ 输入文件:hose.in 输出文件:hose.out 简单对比 时间限制:1 s 内存限制:512 MB [题目描述] 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜 ...
- 1775. [国家集训队2010]小Z的袜子
[题目描述] 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命…… 具体来说,小Z把这N只袜子从1到 ...
- cogs1772 [国家集训队2010]小Z的袜子
沉迷于文化的我N年没更blog了...(\(N \in (0,1)\)) 然后回到机房就沉迷于 \(generals.io\) 无法自拔...QAQ 然后想打一遍splay(然后是LCT),然后放弃了 ...
- 「国家集训队」小Z的袜子
「国家集训队」小Z的袜子 传送门 莫队板子题. 注意计算答案的时候,由于分子分母都要除以2,所以可以直接约掉,这样在开桶算的时候也方便一些. 参考代码: #include <algorithm& ...
- 小Z的袜子 & 莫队
莫队学习 & 小Z的袜子 引入 莫队 由莫涛巨佬提出,是一种离线算法 运用广泛 可以解决广大的离线区间询问题 莫队的历史 早在mt巨佬提出莫队之前 类似莫队的算法和莫队的思想已在Codefor ...
- 【国家集训队2010】小Z的袜子[莫队算法]
[莫队算法][国家集训队2010]小Z的袜子 Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程, ...
随机推荐
- Nodejs 使用 addons 调用c++ 初体验(一)
纠结很久,决定写一点遇到的“坑”. 基础环境:win7-64bit node(v7.5.0) 这些安装实在是太方便了,自行准备吧. 1. 安装 python(2.7.x ),用npm安装 nod ...
- MR执行流程
1.Map任务处理 1.1 读取HDFS中的文件.每一行解析成一个<k,v>.每一个键值对调用一次map函数. <0,hello you> <10,hello me& ...
- zabbix监控MySQL服务状态
Mysql模板使用 在zabbix_agent配置文件中加入监控配置 vim etc/zabbix_agentd.conf ... UserParameter=mysql.version,mysqla ...
- rails小技巧之分组查询统计并去重
分组查询并统计 SpecialGroup.group(:special_type).count select special_type,count(*) from special_groups gro ...
- 小程序开发-7-访问api数据与ES6在小程序中的应用
访问API数据与ES6在小程序中的应用 看待组件的两种观点 组件复用 代码分离-(特别重要) 不能在一个页面写所有的代码,代码分离具有很强的可读性.可维护性 Blink Api 介绍与测试API ur ...
- java图片识别 [Tesseract-OCR]
以下链接包含,安装包及程序运行需要的jar 包,中文资源包. 中文包使用方式:找到tessdata安装目录(我本地:C:\Program Files (x86)\Tesseract-OCR\tessd ...
- python2.7练习小例子(四)
4):题目:输入某年某月某日,判断这一天是这一年的第几天? 程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于2时需考虑多加一天. ...
- 初步学习pg_control文件之十
接前文 初步学习pg_control文件之九 看下面这个 XLogRecPtr checkPoint; /* last check point record ptr */ 看看这个pointer究竟保 ...
- 初步学习pg_control文件之四
接前文,初步学习pg_control文件之三 继续分析 何时出现 DB_SHUTDOWNING状态: 在正常的shutdown的时候,需要进行checkpoint,所以就在此处,设置pg_contr ...
- 30分钟 带你浅入requirejs源码
因为最近项目想现实一个单页功能,用的是react ,然后看了一下react route,挖槽 gzip后16k? 然后我简单写了一个纯单页(不支持多页的单页,所有入口都经过rewrite跑到index ...