摘要: "BZOJ 3809" Gty的二逼妹子序列 | 莫队 + 分块 Autumn和Bakser又在研究Gty的妹子序列了!但他们遇到了一个难题。 对于一段妹子们,他们想让你帮忙求出这之内美丽度∈[a,b]的妹子的美丽度的种类数。 为了方便,我们规定妹子们的美丽度全都在[1,n]中。 给定一个长度为n( 阅读全文
posted @ 2017-12-01 19:59 胡小兔 阅读(293) 评论(1) 推荐(0) 编辑
摘要: 在开始学习莫队之前,照例先甩一道例题: "BZOJ 1878 HH的项链" 。 题意:求区间内数的个数,相同的数只算一次。 在 "我关于这道题的上一篇题解" 中,我使用了主席树来在线做这道题;在洛谷的一道类似题中,我使用了分块;而如果不要求在线,这道题还有一种极其好写的方法——莫队。 什么是莫队? 阅读全文
posted @ 2017-12-01 14:45 胡小兔 阅读(5892) 评论(9) 推荐(11) 编辑
摘要: "51nod 1290" Counting Diff Pairs | 莫队 树状数组 题面 一个长度为N的正整数数组A,给出一个数K以及Q个查询,每个查询包含2个数l和r,对于每个查询输出从A[i]到A[j]中,有多少对数,abs(A[i] A[j]) include include include 阅读全文
posted @ 2017-11-30 17:38 胡小兔 阅读(202) 评论(0) 推荐(0) 编辑
摘要: "BZOJ 1086" 王室联邦 题意 把一棵树分块,每块大小在[B, 3B]之间(B由输入数据给出),每个块需要对应一个核心点,核心点可以在块内,这个点要满足块内每个点到核心点的路径上的点都属于这个块(核心点本身不算),请输出分块方案。 题解 VFK的糖果公园题解让我先来把这道题做了…… 做法:直 阅读全文
posted @ 2017-11-30 16:36 胡小兔 阅读(952) 评论(2) 推荐(0) 编辑
摘要: "BZOJ 3289" Mato的文件管理 题意 求区间逆序对。 题解 在莫队的基础上使用树状数组求逆序对。 在当前区间左侧加入一个数时,res += 原区间比它小的数的个数; 在当前区间右侧加入一个数时,res += 原区间比它大的数的个数; 在当前区间左侧删除一个数时,res = 原区间比它小的 阅读全文
posted @ 2017-11-30 14:13 胡小兔 阅读(190) 评论(0) 推荐(0) 编辑
摘要: "BZOJ 2038" 小Z的袜子 莫队(普通版……)最大的优点可能就是好写?这道莫队棵题是我吃完午饭15分钟写完的……可能大佬们写得要更快吧。 题意 给出一个序列,每次询问一个区间,问:在区间内随机取出两个数,相同的概率是多少。 题解 莫队棵题! 维护cnt[]数组,表示一个数在当前区间内出现了多 阅读全文
posted @ 2017-11-30 13:22 胡小兔 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 题意 询问区间有多少不同的数。 题解 和 "Luogu 1903" 一样,这道题也是用pre数组来求区间不同数的个数,这里pre[i]表示a[i]上一次出现的位置 +1,询问相当于查询区间内有多少pre小于等于左端点。 c++ include include include include usin 阅读全文
posted @ 2017-11-28 20:22 胡小兔 阅读(690) 评论(0) 推荐(1) 编辑
摘要: 题意 给出一个序列,求区间内出现次数为偶数的数的个数。 题解 分块。 由于“区间内出现次数为偶数”这个定语太长了,下面的题解中,我称区间内出现次数为偶数的数为“妙数”(感谢 "Mrsheep" 起了个名字)。 首先,求出中间整块部分的妙数有多少,记作ans(类似上一题 "BZOJ 2724" ,这个 阅读全文
posted @ 2017-11-28 16:45 胡小兔 阅读(270) 评论(0) 推荐(1) 编辑
摘要: DeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBugDeBug 阅读全文
posted @ 2017-11-28 13:32 胡小兔 阅读(391) 评论(0) 推荐(0) 编辑
摘要: "Luogu 2801" 教主的魔法 | 分块模板题 我犯的错误: 1. 有一处l打成了1,还看不出来…… 2. 缩小块大小De完bug后忘了把块大小改回去就提交……还以为自己一定能A了…… c++ include include include include using namespace st 阅读全文
posted @ 2017-11-27 17:12 胡小兔 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 想当年……还是邱神给我讲的凸包来着…… 阅读全文
posted @ 2017-11-26 14:41 胡小兔 阅读(221) 评论(0) 推荐(0) 编辑
摘要: "ZOJ 1081" Within 我使用的是“射线法”:从该点出发,作一条向左的水平射线,与多边形的边的交点有奇数个则点在多边形内。 需要注意的点: 1. 如果点在多边形的边上特判。 2. 考虑射线与多边形的一个交点是多边形的顶点的情况, 最左边的那个顶点算一个交点,左边第二种的那个顶点算两个交点 阅读全文
posted @ 2017-11-26 11:06 胡小兔 阅读(201) 评论(0) 推荐(0) 编辑
摘要: "BZOJ 2243" 染色 | 树链剖分模板题进阶版 这道题呢~就是个带区间修改的树链剖分~ 如何区间修改?跟树链剖分的区间询问一个道理,再加上线段树的区间修改就好了。 这道题要注意的是,无论是线段树上还是原树上,把两个区间的信息合并的时候,要注意中间相邻两个颜色是否相同。 这代码好长啊啊啊啊 幸 阅读全文
posted @ 2017-11-25 20:55 胡小兔 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 又做了一遍……去掉读入优化只有八十行~ c++ include include include using namespace std; typedef long long ll; define space putchar(' ') define enter putchar('\n') templa 阅读全文
posted @ 2017-11-25 18:18 胡小兔 阅读(221) 评论(0) 推荐(0) 编辑
摘要: "BZOJ 3295" 动态逆序对 这道题和三维偏序很类似。某个元素加入后产生的贡献 = time更小、pos更小、val更大的元素个数 + time更小、pos更大、val更小的元素个数。 分别用类似CDQ分治求三维偏序的方法求即可。 阅读全文
posted @ 2017-11-25 10:15 胡小兔 阅读(201) 评论(0) 推荐(0) 编辑
摘要: "Luogu 3810 & BZOJ 3263" 陌上花开/三维偏序 | CDQ分治 题面 $n$个元素,每个元素有三个值:$a_i$, $b_i$ 和 $c_i$。定义一个元素的偏序是三个值都小于等于它的值的元素的个数,对于$[0, n)$的每个值$i$,求偏序为$i$的元素个数。 题解 这道题我 阅读全文
posted @ 2017-11-24 17:37 胡小兔 阅读(375) 评论(0) 推荐(0) 编辑
摘要: "BZOJ 2152" 聪聪可可 | 树的点分治 点分治板题。 把树从重心分开,递归处理各个子树,并处理路径跨重心的情况:计算所有点中距离重心的距离相加为3的倍数的点对数,再减去每个子树中距离重心距离和加上二倍“重心到该子树根距离”为3的倍数的点对数。 c++ include include inc 阅读全文
posted @ 2017-11-23 20:07 胡小兔 阅读(221) 评论(0) 推荐(0) 编辑
摘要: "BZOJ 2458" 最小三角形 题面 一个平面上有很多点,求他们中的点组成的周长最小的三角形的周长。 题解 跟 "平面最近点对" 差不多,也是先把区间内的点按x坐标从中间分开,递归处理,然后再处理横跨中线的三角形。 如何缩小范围?设左右两个子区间发现的最小周长是d,则与中线距离超过d / 2都没 阅读全文
posted @ 2017-11-22 17:56 胡小兔 阅读(571) 评论(0) 推荐(0) 编辑
摘要: "51nod 1564" 区间的价值 题面 一个区间的价值是区间最大值×区间最小值。给出一个序列$a$, 求出其中所有长度为k的子区间的最大价值。对于$k = 1, 2, ..., n$输出答案。 保证序列随机生成 题解 我的做法是$O(n \log n)$的! 对于一个区间[l, r],取其中的最 阅读全文
posted @ 2017-11-22 15:43 胡小兔 阅读(500) 评论(0) 推荐(0) 编辑
摘要: "Luogu 1429" 平面最近点对 题目描述 给定平面上n个点,找出其中的一对点的距离,使得在这n个点的所有点对中,该距离为所有点对中最小的 输入输出格式 输入格式: 第一行:n;2≤n≤200000 接下来n行:每行两个实数:x y,表示一个点的行坐标和列坐标,中间用一个空格隔开。 输出格式: 阅读全文
posted @ 2017-11-21 16:03 胡小兔 阅读(399) 评论(1) 推荐(0) 编辑
摘要: WA是会呼吸的痛 阅读全文
posted @ 2017-11-20 15:31 胡小兔 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 一棵简单能用的左偏树 左偏树是一种可并堆,它查询最小值是$O(1)$,合并是$O(\log n)$。Push 和 pop 操作都可以用合并来实现(分别是并入一个只有一个节点的堆和合并该堆根节点的左右两个子树),所以 push 和 pop 都是 $O(n \log n)$。 在学习左偏树的性质之前,我 阅读全文
posted @ 2017-11-19 14:07 胡小兔 阅读(325) 评论(0) 推荐(0) 编辑
摘要: "LOJ 6008" 【网络流24题】餐巾计划 题解 一张图片说明建图方法: 解说: 这种建图方法完美区分开了“脏餐巾”和“干净餐巾”两种餐巾。 每天一定会有r[i]个脏餐巾,所以源点向每天的“脏餐巾”(图上used)连边,容量r[i],费用是0。另外,前一天的脏餐巾也可以留到下一天再处理,所以每天 阅读全文
posted @ 2017-11-17 17:39 胡小兔 阅读(400) 评论(0) 推荐(0) 编辑
摘要: 如何写出一份简单能用的费用流代码 标签: 笔记 如果你已经学会了Dinic最大流,那么在Dinic的基础上稍加修改,就可以得到一份费用流代码。 主要的修改在于把原来的BFS“分层”函数改成一个SPFA(就是“队列优化的Bellman Ford算法”——如果你喜欢这个名字)。原先的dis表示距离源点的 阅读全文
posted @ 2017-11-17 15:44 胡小兔 阅读(492) 评论(0) 推荐(1) 编辑
摘要: "LOJ 6004" 【网络流24题】圆桌聚餐 题面 假设有来自$n$个不同单位的代表参加一次国际会议。每个单位的代表数分别为$r_i$。会议餐厅共有$m$张餐桌,每张餐桌可容纳$c_i$个代表就餐。 为了使代表们充分交流,希望从同一个单位来的代表不在同一个餐桌就餐。 试设计一个算法,给出满足要求的 阅读全文
posted @ 2017-11-16 21:43 胡小兔 阅读(307) 评论(0) 推荐(0) 编辑
摘要: "LOJ 6003" 【网络流24题】魔术球 题面 【题目描述】 假设有 n 根柱子,现要按下述规则在这 n 根柱子中依次放入编号为 1,2,3,4,⋯ 的球。 1. 每次只能在某根柱子的最上面放球。 2. 在同一根柱子中,任何 2个相邻球的编号之和为完全平方数。 试设计一个算法,计算出在 n 根柱 阅读全文
posted @ 2017-11-16 21:42 胡小兔 阅读(268) 评论(0) 推荐(0) 编辑
摘要: "LOJ 6002" 【网络流24题】最小路径覆盖 题面 给定有向图 $G=(V,E)$。设 $P$ 是 $G$ 的一个简单路(顶点不相交)的集合。如果 $V$ 中每个顶点恰好在 $P$ 的一条路上,则称 $P$ 是 $G$ 的一个路径覆盖。$P$ 中路径可以从 $V$ 的任何一个顶点开始,长度也是 阅读全文
posted @ 2017-11-16 21:39 胡小兔 阅读(197) 评论(0) 推荐(0) 编辑
摘要: "LOJ 6001" 【网络流24题】太空飞行计划 题面 【问题描述】 W 教授正在为国家航天中心计划一系列的太空飞行。每次太空飞行可进行一系列商业性实验而获取利润。现已确定了一个可供选择的实验集合$E={E_1,E_2,…,E_m}$,和进行这些实验需要使用的全部仪器的集合$I={I_1,I_2, 阅读全文
posted @ 2017-11-16 21:38 胡小兔 阅读(377) 评论(0) 推荐(0) 编辑
摘要: 除非特别忙,我接下来会尽可能翻译我做的每道CF题的题面! 阅读全文
posted @ 2017-11-14 17:44 胡小兔 阅读(263) 评论(0) 推荐(0) 编辑
摘要: "51nod 1483" 化学变换 题面 给出n个整数(n include include include include define space putchar(' ') define enter putchar('\n') using namespace std; typedef long l 阅读全文
posted @ 2017-11-13 17:47 胡小兔 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 胡小兔的NOIP2017游记【出成绩后更新版】 2017.11.22 Update 前几天成绩出来啦,看这篇博客访问量还挺多的,下面就分享一下结果吧: 我的Day1T2和Day2T1两道最水的题都跪了……各扣20分……真是尴尬。 Day1T3被卡常,机房电脑评测能100,而成绩只有70,后三个大数据 阅读全文
posted @ 2017-11-12 20:55 胡小兔 阅读(1834) 评论(6) 推荐(6) 编辑
摘要: 我被线段树艹了! 阅读全文
posted @ 2017-11-07 17:51 胡小兔 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 这篇博客毫无意义…… 只是表达一下我仍然会写树状数组和线段树…… "题目链接" c++ include include include define INF 0x3f3f3f3f define space putchar(' ') define enter putchar('\n') using n 阅读全文
posted @ 2017-11-06 21:54 胡小兔 阅读(397) 评论(0) 推荐(0) 编辑
摘要: 这样似乎跑得快: 初始化所有的dis是0,然后枚举每个点作为起点,用DFS更新所有点的dis; 如果更新到一个栈中节点,那么有负环。 c++ include include include define INF 0x3f3f3f3f define space putchar(' ') define 阅读全文
posted @ 2017-11-06 17:52 胡小兔 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 分块注意最后一块不完整,需要特判! 阅读全文
posted @ 2017-11-05 21:17 胡小兔 阅读(609) 评论(1) 推荐(0) 编辑
摘要: 注意multiset中erase一个变量会删除所有与这个变量相等的元素! 阅读全文
posted @ 2017-11-05 15:31 胡小兔 阅读(328) 评论(0) 推荐(0) 编辑
摘要: "51nod 1471" 小S的兴趣 题面 小S喜欢有趣的事。但是,每个人的兴趣都是独特的。小S热衷于自问自答。有一天,小S想出了一个问题。 有一个包含n个正整数的数组a和针对这个数组的几个问题。这些问题有两种类型: 1. 在数组下标l到r的部分上,将一个单元格循环移动到右端。即以下面方式重新分配数 阅读全文
posted @ 2017-11-04 20:34 胡小兔 阅读(400) 评论(0) 推荐(0) 编辑
摘要: C++ bitset——高端压位卡常题必备STL 以下内容翻译自 "cplusplus.com" ,极大地锻炼了我的英语能力。 bitset存储二进制数位。 bitset就像一个bool类型的数组一样,但是有空间优化——bitset中的一个元素一般只占1 bit,相当于一个char元素所占空间的八分 阅读全文
posted @ 2017-11-02 18:30 胡小兔 阅读(71344) 评论(12) 推荐(92) 编辑
摘要: "51nod 1232" 完美数 题面 如果一个十进制数的每一位都是它的因数,则称这个数为完美数。 给出L, R(L, R include include include define INF 0x3f3f3f3f define space putchar(' ') define enter put 阅读全文
posted @ 2017-11-02 17:17 胡小兔 阅读(581) 评论(1) 推荐(0) 编辑
摘要: "51nod 1376" 最长上升子序列的数量 题解 我们设lis[i]为以位置i结尾的最长上升子序列长度,dp[i]为以位置i结尾的最长上升子序列数量。 显然,dp[i]要从前面的一些位置(设为位置j)的dp转移过来。 j要满足下面的条件: 1. j include include include 阅读全文
posted @ 2017-11-02 15:54 胡小兔 阅读(528) 评论(0) 推荐(0) 编辑