【序列莫队】BZOJ2038- [2009国家集训队]小Z的袜子(hose)
【题目大意】
给出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)的更多相关文章
- E. XOR and Favorite Number 莫队 2038: [2009国家集训队]小Z的袜子(hose)
一直都说学莫队,直到现在才学,训练的时候就跪了 T_T,其实挺简单的感觉.其实训练的时候也看懂了,一知半解,就想着先敲.(其实这样是不好的,应该弄懂再敲,以后要养成这个习惯) 前缀异或也很快想出来 ...
- BZOJ2038 2009国家集训队 小Z的袜子(hose) 【莫队】
BZOJ2038 2009国家集训队 小Z的袜子(hose) Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼 ...
- BZOJ2038: [2009国家集训队]小Z的袜子(hose) -- 莫队算法 ,,分块
2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 3577 Solved: 1652[Subm ...
- [BZOJ2038] [2009国家集训队]小Z的袜子(hose) 莫队算法练习
2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 10299 Solved: 4685[Sub ...
- [bzoj2038][2009国家集训队]小Z的袜子(hose)_莫队
小Z的袜子 hose 2009-国家集训队 bzoj-2038 题目大意:给定一个n个袜子的序列,每个袜子有一个颜色.m次询问:每次询问一段区间中每种颜色袜子个数的平方和. 注释:$1\le n,m\ ...
- bzoj2038: [2009国家集训队]小Z的袜子(hose) [莫队]
Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命……具体来说,小Z把这N只袜 ...
- BZOJ2038[2009国家集训队]小Z的袜子(hose)——莫队
题目描述 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命……具体来说,小Z把这N只袜子从1到N编号 ...
- [bzoj2038][2009国家集训队]小Z的袜子(hose)——莫队算法
Brief Description 给定一个序列,您需要处理m个询问,每个询问形如[l,r],您需要回答在区间[l,r]中任意选取两个数相同的概率. Algorithm Design 莫队算法入门题目 ...
- BZOJ2038 [2009国家集训队]小Z的袜子(hose)(莫队算法)
神奇的莫队算法,用来解决可离线无修改的区间查询问题: 首先对原序列进行分块,√n块每块√n个: 然后对所有查询的区间[l,r]进行排序,首先按l所在的块序号升序排序,如果一样就按r升序排序: 最后就按 ...
随机推荐
- Python 关于时间和日期函数使用 -- (转)
python中关于时间和日期函数有time和datatime 1.获取当前时间的两种方法: import datetime,time now = time.strftime("%Y-%m ...
- esp8266 IOT Demo 固件刷写记录
将编译好的固件按照下面地址刷写到esp8266 出现下面错误是因为刷写的设置不对,按照图上设置: load 0x40100000, len 26828, room 16 tail 12chksum 0 ...
- MFC单文档框架分析及执行流程(转)
原文转自 https://blog.csdn.net/u011619422/article/details/40402705 首先来分析一下MFC单文档类的结构: 它包括如下几个类: CAboutDl ...
- rabbitmq之队列性能测试及优化方法(六)
前言 下面关注一下rabbitmq实际使用时的性能问题和怎么进行一些优化. 性能测试 针对每个需要生产/消费者与rabbitmq进行通讯的方法进行测试 测试环境 排除网络IO的干扰,采用生产者和消费者 ...
- Django【进阶】分页功能Pagination
项目中,我们需要很多非业务逻辑的功能,例如分页功能,而且此类功能移植性很好,可以在不同的项目中使用,所以整理好这些功能会一定程度上提高开发效率,下面是分页功能代码,使用时,可单独放在utils目录 & ...
- io多路复用-select()
参照<Unix网络编程>相关章节内容,实现了一个简单的单线程IO多路复用服务器与客户端. 普通迭代服务器,由于执行recvfrom则会发生阻塞,直到客户端发送数据并正确接收后才能够返回,一 ...
- KVM虚拟机建立快照
部分转载: http://blog.csdn.net/gg296231363/article/details/6899533 windows虚拟机默认镜像格式为raw,快照默认格式为qcow2.win ...
- Linux 入门记录:八、Linux 文件系统
一.文件系统 操作系统通过文件系统管理文件及数据,磁盘或分区需要创建文件系统之后,才能被操作系统所用,创建文件系统的过程又称之为格式化.没有文件系统的设备又称之为裸设备(raw),某些环境会需要裸设备 ...
- centos 挂在ntfs
Installing build-essentials in CentOS (make, gcc, gdb):http://www.techblogistech.com/2012/03/install ...
- pycaffe使用.solverstate文件继续训练
import caffe solver_file = "solver.prototxt" solverstate = "xx.solverstate" caff ...