小Z的袜子【莫队算法】
莫队算法最经典的题目吧。
其实莫队算法比较像暴力。(你不写曼哈顿最小生成树还说人家暴力(逃
好吧,其实我用的不是标准的莫队算法,而是类似一种分块的思想
将块的大小保持在sqrt(n),可以证明时间复杂度为O(n^1.5)
貌似可以根据已知[l,r]的信息是否可以O(1)的推出[l+1,r]和[l-1,r]的信息来判断是否试用莫队算法。
对于小Z的袜子这道题,我们先离线的排序询问,左端点第一关键字,右端点第二关键字
将1~n的块分好
block=(int)sqrt(n);for(int i=1;i<=n;i++)belong[i]=(i-1)/block+1;
排序
bool cmp(Node a,Node b){if(belong[a.l]==belong[b.l])return a.r<b.r;return a.l<b.l;
}
一个区间内颜色相同的概率为:
设这个区间每个颜色的个数和记为a[i],则答案为 sigmaC(a[i],2)/C(r-l+1,2)
上下的2!可以约去,变为sigma(a[i] * (a[i]-1))/n*(n-1)
对于每次+1的操作会增加2*pre(a[i]) nowa[i]=pre[a[i]+1
发现如果使用nowa[i]-1的话会出现0*-1增加一是1*0的情况,所以决定不删去2!操作,直接加上prea[i],也就是ans+=后,a[i]++
同理可以分析出减法操作是 cnt减1后 ans-=
代码长这样:
while(r<q[i].r)ans+=cnt[a[++r]]++;while(r>q[i].r)ans-=--cnt[a[r--]];while(l<q[i].l)ans-=--cnt[a[l++]];while(l>q[i].l)ans+=cnt[a[--l]]++;
其他需要注意的就是求个gcd,约分了。
并不清晰为甚么po大爷的分块跑500多秒,而我比他写的MMST还慢。。。
小Z的袜子【莫队算法】相关推荐
- [bzoj 2038 OR 清橙A1206 小Z的袜子]莫队算法
[bzoj 2038 OR 清橙A1206 小Z的袜子]莫队算法 题意描述:[清橙A1206 时限:1s] [bzoj 2038 时限:20s] 题意描述: 作为一个生活散漫的人,小Z每天早上都要耗费 ...
- 清橙A1206 小Z的袜子(莫队算法)
A1206. 小Z的袜子 时间限制:1.0s 内存限制:512.0MB 总提交次数:744 AC次数:210 平均分:44.44 将本题分享到: 查看未格式化的试题 ...
- P1494 [国家集训队]小Z的袜子/莫队学习笔记(误
P1494 [国家集训队]小Z的袜子 题目描述 作为一个生活散漫的人,小\(Z\)每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小\(Z\)再也无法忍受这恼人的找袜子过程,于是他 ...
- 洛谷P1494 [国家集训队]小Z的袜子 莫队
题目描述 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命-- 具体来说,小Z把这N只袜子从1到N编 ...
- 【bzoj2038】[国家集训队2010]小Z的袜子 莫队
莫队:就是一坨软软的有弹性的东西Duang~Duang~Duang~ 为了防止以左端点为第一关键字以右端点为第二关键字使右端点弹来弹去,所以让左端点所在块为关键字得到O(n1.5)的时间效率,至于分块 ...
- P1494 小Z的袜子
P1494 小Z的袜子 莫队板子题,对询问进行排序+分块,从而得到巧妙的复杂度 对于L,R的询问. 设其中颜色为x,y,z的袜子的个数为a,b,c... 那么答案即为 (a*(a-1)/2+b*(b- ...
- BZOJ 2038: [2009国家集训队]小Z的袜子(hose)【莫队算法裸题学习笔记】
2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec Memory Limit: 259 MB Submit: 9894 Solved: 4561 [Su ...
- 数据结构(莫队算法):国家集训队2010 小Z的袜子
[题目描述] 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命-- 具体来说,小Z把这N只袜子从1到 ...
- BZOJ 2038: [2009国家集训队]小Z的袜子(莫队算法例题)
Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命-- 具体来说,小Z把这N只 ...
- 莫队算法 BOJ 2038 [2009国家集训队]小Z的袜子(hose)
题目传送门 1 /* 2 莫队算法:求出[l, r]上取出两只相同袜子的个数. 3 莫队算法是离线处理一类区间不修改查询类问题的算法.如果你知道了[L,R]的答案,可以在O(1)的时间下得到 4 [L ...
最新文章
- 软件测试面试题-如何测试复制粘贴功能
- 第15届全国大学生智能汽车竞赛 人工智能挑战赛(百度)
- iphone清理缓存小技巧_那些不为人知的iPhone隐藏小技巧
- 马云:员工的离职原因--转载
- html2canvas截图页面中某块区域的图不全_截图操作千千万,唯舒适最重要!你更Pick谁?...
- oracle having用法
- ckeditor5自定义 vue_vue中的富文本编辑器CKEditor5
- mysql行级锁升级_mysql innodb 行级锁升级
- 【Java】Optional容器
- php判断是不是纯汉字,php判断输入是否是纯数字,英文,汉字的方法
- 在Struts 2中使用JSON Ajax
- 《Dreamweaver CS6完美网页制作——基础、实例与技巧从入门到精通》——1.2 网页的基本构成元素...
- 中标麒麟(linux)下Qt调用python数据转换
- android手机如何拥有苹果表情包,怎样让安卓emoji显示iPhone的emoji样式
- vue使用jsMind(思维导图)
- Mongo Java按日期查询
- Json数据格式解析,难点,易错点分析
- 计算机专业知识教学,2016计算机专业知识:计算机的分类(一)
- 一个很好的看电子书的软件
- jmeter监听器---jp@gc - PerfMon Metrics Collector
热门文章
- 时间复杂度和空间复杂度(超详细)
- 常见硬件通信协议介绍
- 全球排名前10位的广告公司
- 问题记录:node.js连接数据库出现两个问题getaddrinfo ENOTFOUND locahost;Client does not support authentication protoco
- 代码远程调用aria2实现URL资源或BT种子下载
- VScode已经设置了默认浏览器依然不成功原因
- ASP连接Oracle数据库简易DEMO完全案例
- android浏览器实现收藏功能,Lua布局fusionapp 收藏功能与历史记录实现
- 打开我的收藏夹 -- Python时间序列分析篇
- 工业镜头和民用镜头的特点和区别