洛谷P1494小Z的袜子 [国家集训队] 莫队
正解:莫队
解题报告:
这是,传送门qwq
昂大概是莫队板子题?
首先可以推出来答案是(∑C(2,color[i]))/C(2,r-l+1)趴?挺显然的不解释了qwq
然后显然除数直接做就成,考虑怎么求被除数 ∑C(2,color[i])
可以发现从[l,r]到[l,r+1]只++color[r+1]然后就没有改变了呢,那答案就只用改变一点儿(懒得港多少了太容易算了...),所以考虑用莫队
似,似乎就没了?
好趴果然板子题没什么好讲的呢
(啊想起来,就是,这个代码我觉得不是最板子的?就是和书上的表述不太一样,但是我感觉书上的可能跑得快些...?哪天写个书上版本的补上来qwq
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define rp(i,x,y) for(register ll i=x;i<=y;++i) const ll N=+;
ll n,m,c[N],len,cjkl,cjkr,cjkans,num[N];
struct qest{ll l,r,id,bl;}q[N];
struct an{ll bcs,cs;}ans[N]; inline ll read()
{
char ch=getchar();ll x=;bool y=;
while(ch!='-' && (ch<'' || ch>''))ch=getchar();
if(ch=='-')ch=getchar(),y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=getchar();
return y?x:-x;
}
inline bool cmp(qest gold,qest genius)
{
if(gold.bl==genius.bl)return gold.r<genius.r;
return gold.bl<genius.bl;
}
inline ll update(ll col,ll data){cjkans-=num[col]*(num[col]-)/;num[col]+=data;cjkans+=num[col]*(num[col]-)/;} int main()
{
n=read();m=read();len=sqrt(n);
rp(i,,n)c[i]=read();
rp(i,,m)q[i].l=read(),q[i].r=read(),q[i].id=i,q[i].bl=(q[i].l-)/len+;
sort(q+,q++m,cmp);cjkl=cjkr=q[].l;num[c[q[].l]]=;
rp(i,,m)
{
while(cjkl<q[i].l)update(c[cjkl],-),++cjkl;
while(cjkl>q[i].l)update(c[cjkl-],),--cjkl;
while(cjkr<q[i].r)update(c[cjkr+],),++cjkr;
while(cjkr>q[i].r)update(c[cjkr],-),--cjkr;
if(q[i].l==q[i].r)ans[q[i].id].bcs=,ans[q[i].id].cs=;
else{ans[q[i].id].bcs=cjkans,ans[q[i].id].cs=(q[i].r-q[i].l+)*(q[i].r-q[i].l)/;}
}
rp(i,,m)
{
ll t=__gcd(ans[i].bcs,ans[i].cs);if(t>)ans[i].bcs/=t,ans[i].cs/=t;
printf("%lld/%lld\n",ans[i].bcs,ans[i].cs);
}
return ;
}
//maye改死我了QAQ
然后感觉没什么好讲的板子题就这么让我改了一个多小时:D
洛谷P1494小Z的袜子 [国家集训队] 莫队的更多相关文章
- Bzoj2038/洛谷P1494 小Z的袜子(莫队)
题面 Bzoj 洛谷 题解 考虑莫队算法,首先对询问进行分块(分块大小为\(sqrt(n)\)),对于同一个块内的询问,按照左端点为第一关键字,右端点为第二关键字排序.我们统计这个区间内相同的颜色有多 ...
- P1494 小Z的袜子 【普通莫队】
我的第二道莫队题,对莫队又有了自己的看法. 在第一题的基础上之上,觉得莫队有个很关键的地方在于 莫队所维护的值是什么,怎么推出维护的公式来. 这道题就是这样,一开始还没自己推出公式来,也有几个坑点. ...
- 洛谷P1494 小Z的袜子
题意:在[l, r]之中任选两个数,求它们相同的概率. 解: 莫队入门. 概率这个很好搞,就是cnt * (cnt - 1) / 2. 然后发现每次挪指针的时候,某一个cnt会+1或-1.这时候差值就 ...
- BZOJ_2038_[2009国家集训队]小Z的袜子(hose)_莫队
BZOJ_2038_[2009国家集训队]小Z的袜子(hose)_莫队 Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无 ...
- BZOJ 2038: [2009国家集训队]小Z的袜子(hose)【莫队算法裸题&&学习笔记】
2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 9894 Solved: 4561[Subm ...
- 2038: [2009国家集训队]小Z的袜子(hose) (莫队算法)
题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=2038 专题练习: http://acm.hust.edu.cn/vjudge/conte ...
- BZOJ2038 2009国家集训队 小Z的袜子(hose) 【莫队】
BZOJ2038 2009国家集训队 小Z的袜子(hose) Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼 ...
- [bzoj2038][2009国家集训队]小Z的袜子(hose)_莫队
小Z的袜子 hose 2009-国家集训队 bzoj-2038 题目大意:给定一个n个袜子的序列,每个袜子有一个颜色.m次询问:每次询问一段区间中每种颜色袜子个数的平方和. 注释:$1\le n,m\ ...
- bzoj 2038 小Z的袜子(hose)(莫队算法)
2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 11542 Solved: 5166[Sub ...
随机推荐
- Tomcat漏洞利用与安全加固实例分析
Tomcat中间件经常遇到的漏洞: 1.Tomcat默认存在一个管理后台,默认的管理地址是http://IP或域名:端口号/manager/html 2.Axis2默认口令安全漏洞,默认的管理地址是h ...
- Ansible 安装和管理服务
ansible 使用 yum 模块来安装软件包,使用 service 模块来启动软件: [root@localhost ~]$ ansible 192.168.119.134 -m yum -a &q ...
- linux文件和目錄管理的基本命令命令
ls命令 作用:顯示目標列表或目錄的內容 語法:ls[選項][目錄或文件] -a:顯示指定目錄下所有子目錄與文件,包括隱藏文件 -l:顯示文件的詳細信息 -d: 顯示目錄 例:ls -dl cd命令 ...
- 《Lua程序设计》第5章 函数 学习笔记
Lua为面向对象式的调用也提供了一种特殊的语法——冒号操作符.表达式o.foo(o, x)的另一种写法是o:foo(x),冒号操作符是调用o.foo时将o隐含地作为函数的第一个参数.Lua可以调用C语 ...
- rabbitMQ常用的命令
rabbitMQ常用的命令 启动监控管理器:rabbitmq-plugins enable rabbitmq_management 关闭监控管理器:rabbitmq-plugins disable r ...
- PHP curl get post通用类
<?php /** * @author:xiaojiang * curl 通用方法 ..get /post 传送数据 */ class process{ const GET = 0; const ...
- C# 压缩 SharpZipLib
zip压缩与解压缩: 官方网站:http://icsharpcode.github.io/SharpZipLib/ 官网下载的资源并不是能够直接运行的,感觉是这个dll的编译,开源的 参考文档:htt ...
- QT开发之旅三串口设备调试工具
这里首先说明一下,这个为什么叫串口设备调试工具而不是串口调试工具,是因为这个工具比网络上的串口调试工具多出了一些真实需要的用来调试设备的功能,首先一点就是大部分的串口调试工具收到数据都是立即返回,这样 ...
- Python pyQt4/PyQt5 学习笔记3(绝对对位,盒布局,网格布局)
本节研究布局管理的内容. (一)绝对对位 import sys from PyQt4 import QtGui class Example(QtGui.QWidget): def __init__( ...
- python tkinter学习——布局
目录 一.pack() 二.grid() 三.place() 四.Frame() 正文 布局 一.pack() pack()有以下几个常用属性: side padx pady ipadx ipady ...