HYSBZ - 2038经典莫队算法题
无修改的莫队
emmm莫队的几条性质,必须是离线的,复杂度是n*sqrt(n)
就是通过预处理查询区间,然后从(l,r)转移到(ll,rr),这样的复杂度是曼哈顿距离,即abs(l-ll)+abs(r-rr)
通过分块可以保证复杂度在n*sqrt(n)内
详细请参考:https://www.cnblogs.com/Paul-Guderian/p/6933799.html
- #include<bits/stdc++.h>
- #define fi first
- #define se second
- #define ll long long
- #define mp make_pair
- #define pb push_back
- #define mod 1000000007
- #define pii pair<int,int>
- #define ls l,m,rt<<1
- #define rs m+1,r,rt<<1|1
- using namespace std;
- const int g=10.0,eps=1e-;
- const int N=+,maxn=+,inf=0x3f3f3f3f;
- struct mo{
- int l,r,id;
- ll a,b;
- }q[N];
- int belong[N],co[N];
- ll sum[N],ans;
- bool cmp(mo a,mo b)
- {
- return belong[a.l]==belong[b.l]?a.r<b.r:a.l<b.l;
- }
- bool cmp1(mo a,mo b)
- {
- return a.id<b.id;
- }
- void re(int i,int add)
- {
- ans-=sum[co[i]]*sum[co[i]];
- sum[co[i]]+=add;
- ans+=sum[co[i]]*sum[co[i]];
- }
- int main()
- {
- /*ios::sync_with_stdio(false);
- cin.tie(0);*/
- int n,m;
- scanf("%d%d",&n,&m);
- int block=sqrt(n);
- for(int i=;i<=n;i++)
- scanf("%d",&co[i]),belong[i]=i/block+;
- for(int i=;i<=m;i++)
- scanf("%d%d",&q[i].l,&q[i].r),q[i].id=i;
- sort(q+,q++m,cmp);
- int l=,r=;
- for(int i=;i<=m;i++)
- {
- while(l<q[i].l)re(l,-),l++;
- while(l>q[i].l)re(l-,),l--;
- while(r<q[i].r)re(r+,),r++;
- while(r>q[i].r)re(r,-),r--;
- q[i].a=ans-(q[i].r-q[i].l+);
- q[i].b=(ll)(q[i].r-q[i].l+)*(q[i].r-q[i].l);
- ll x=__gcd(q[i].a,q[i].b);
- q[i].a/=x;q[i].b/=x;
- }
- sort(q+,q++m,cmp1);
- for(int i=;i<=m;i++)
- printf("%lld/%lld\n",q[i].a,q[i].b);
- return ;
- }
- /*******************
- *******************/
HYSBZ - 2038经典莫队算法题的更多相关文章
- 小Z的袜子(hose) HYSBZ - 2038 (莫队算法)
原文地址:http://hzwer.com/2782.html 「BZOJ2038」[2009国家集训队] 小Z的袜子(hose) 2014年4月26日13,34721 Description 作为一 ...
- 【BZOJ3781、2038】莫队算法2水题
[BZOJ3781]小B的询问 题意:有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数 ...
- bzoj 2038(莫队算法)
2038: [2009国家集训队]小Z的袜子(hose) 时间限制: 20 Sec 内存限制: 259 MB 题目描述 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来 ...
- bzoj2038 小Z的袜子(hose)——莫队算法
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2038 就是莫队算法: 先写了个分块,惨WA: #include<iostream> ...
- D. Powerful array 莫队算法或者说块状数组 其实都是有点优化的暴力
莫队算法就是优化的暴力算法.莫队算法是要把询问先按左端点属于的块排序,再按右端点排序.只是预先知道了所有的询问.可以合理的组织计算每个询问的顺序以此来降低复杂度. D. Powerful array ...
- HDU5381【莫队算法+区间GCD特性】
前言: 主要最近在刷莫队的题,这题GCD的特性让我对莫队的使用也有了新的想法.给福利:神犇的一套莫队算法题 先撇开题目,光说裸的一个莫队算法,主要的复杂度就是n*sqrt(n)对吧,这里我忽略了一个左 ...
- BZOJ 2038: [2009国家集训队]小Z的袜子(hose)【莫队算法裸题&&学习笔记】
2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 9894 Solved: 4561[Subm ...
- BZOJ 2038 小Z的袜子(hose) 莫队算法模板题
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=2038 题目大意: 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中 ...
- HYSBZ - 2038 小Z的袜子 (莫队算法)
A1206. 小Z的袜子 时间限制:1.0s 内存限制:512.0MB 总提交次数:744 AC次数:210 平均分:44.44 将本题分享到: 查看未格式化的试题 ...
随机推荐
- Python:itertools模块(转)
原文:http://www.cnblogs.com/cython/articles/2169009.html itertools模块包含很多创建迭代器的函数,可以用各种方式对数据进行循环操作,此模块中 ...
- PAT 1066. 图像过滤(15)
图像过滤是把图像中不重要的像素都染成背景色,使得重要部分被凸显出来.现给定一幅黑白图像,要求你将灰度值位于某指定区间内的所有像素颜色都用一种指定的颜色替换. 输入格式: 输入在第一行给出一幅图像的分辨 ...
- linux环回文件
我们通常在设备上(比如磁盘分区)上创建文件系统,这些存储设备能够以设备文件的形式来使用,如/dev/device_name.为了使用存储设备上的文件系统,我们将其挂载到挂载点. 环回文件系统是指那些在 ...
- 2.5 使用ARDUINO做主控,手机发送短信控制开关LED
需要准备的硬件 MC20开发板 1个 https://item.taobao.com/item.htm?id=562661881042 GSM/GPRS天线 1根 https://item.taoba ...
- centos中搭建nginx环境
原文地址 安装PCRE 源码:ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ cd /usr/local/src wget ftp://f ...
- CSS 中z-index全解析(摘自阿里西西)
z-index全解析 Z-index属性决定了一个HTML元素的层叠级别.元素层叠级别是相对于元素在Z轴上(与X轴Y轴相对照)的位置而言.一个更高的Z-index值意味着这个元素在叠层顺序中会更靠近顶 ...
- ANSI编码——代码页
详见wiki: http://zh.wikipedia.org/wiki/%E4%BB%A3%E7%A0%81%E9%A1%B5
- Android BlueDroid(蓝牙协议栈)
Android BlueDroid(一):BlueDroid概述 Android BlueDroid(二):BlueDroid蓝牙开启过程init Android BlueDroid(三):BlueD ...
- 使用bedtools的一个问题
问题:有两个平行测序样本,分别得到1.vcf和2.vcf两个文件,想知道这两个文件有多少个重合点. [wangjq@mgmt CHG029194]$ cat t1 chr1 10 10 chr1 11 ...
- ACM训练小结-2018年6月16日
今天题目情况如下:A题:线段树+XOR性质.情况:由于写法问题,调试困难,浪费大量时间.B题:(对所有满足i mod p==q,求a[i]之和),无修改,直接上n*sqrt(n)的分块写法.情况:由于 ...