摘要: 左偏树能干什么?它支持$O(logn)$完成插入,删除,查询最值,合并。 看到前三个我们想到堆(优先队列),所以左偏树是可并堆的一种。 说到可并堆,主要有左偏树,配对堆,二项堆,斐波那契堆等几种。而$OI$界主要使用前两种,主要是好写的缘故。 配对堆似乎是一种比左偏树时间复杂度及常数更小且代码复杂度 阅读全文
posted @ 2019-04-28 23:29 OIerC 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 谨以此文向人工智能先驱,$A$ 算法发明者 "$Nils\ Nilsson$" 致敬 推 "一篇深入研究的博客" ,而本文更多是粗略理解和习题吧。 $A$ 算法是什么?它是启发式搜索的一种,即广度搜索算法$bfs$加上估价函数。 而$IDA$ 则是另一种类似的启发式搜索,是迭代加深$dfs$加上估价 阅读全文
posted @ 2019-04-25 22:12 OIerC 阅读(1023) 评论(0) 推荐(0) 编辑
摘要: 首先可以了解一下启发式合并,这个可以看 "我之前的博客" 。~~虽然两者关系不大~~ 该算法英文名为$dsu\ on\ tree$,最先以成型的算法出现是在$Codeforces$的 "这篇博客上" 。 树上启发式合并可以在$O(nlogn)$的时间复杂度内离线解决很多无修改子树询问。 先由一个例子 阅读全文
posted @ 2019-04-25 09:54 OIerC 阅读(451) 评论(0) 推荐(0) 编辑
摘要: 启发式算法是什么? 启发式算法是基于人类的经验和直观感觉,对一些算法的优化。 比如说启发式搜索$A$ 算法。 启发式合并是什么? 考虑一个问题:把$n$个总元素个数为$m$的数据结构合并起来(假设是线性的)。 每次合并复杂度最坏$O(m)$,总复杂度$O(nm)$?显然无法接受。 每次把个数少的合并 阅读全文
posted @ 2019-04-23 23:44 OIerC 阅读(3449) 评论(3) 推荐(3) 编辑
摘要: 线段树合并说全来就是动态开点权值线段树合并。所以你需要掌握权值线段树的基本知识以及知道什么是动态开点(雾 线段树合并的主要方式如下: 对于两棵线段树都有的节点,新的线段树的该节点值为两者和。 对于某一棵线段树有的节点,新的线段树保存该节点的值。 然后对左右子树递归处理。 不能理解?那就看一下代码。 阅读全文
posted @ 2019-04-23 23:21 OIerC 阅读(3162) 评论(0) 推荐(2) 编辑
摘要: 搜索是$OI$中一个十分基础也十分重要的部分,近年来搜索题目越来越少,逐渐淡出人们的视野。但一些对搜索的优化,例如$A$ ,迭代加深依旧会不时出现。本文讨论另一种搜索——折半搜索$(meet\ in\ the\ middle)$。 由一道例题引入: "CEOI2015 Day2 世界冰球锦标赛" 我 阅读全文
posted @ 2019-04-22 19:14 OIerC 阅读(554) 评论(0) 推荐(0) 编辑
摘要: "题目传送门" Description 一个项目分$n$天完成,每天需要$a_i$个志愿者。志愿者有$m$种招募方式,第$i$种从第$s_i$天工作到第$t_i$天,工资$c_i$元。求完成项目的最少花费。$(n\leq 10^3,m\leq 10^4)$ Solution 数据范围和题目描述都指向 阅读全文
posted @ 2019-04-22 14:30 OIerC 阅读(242) 评论(0) 推荐(0) 编辑
摘要: "题目传送门" Description 给定二维平面内$n$个点$(n\leq 300)$,求能组成五角星(不要求正五角星)的五元组个数。 Solution 一道小清新的~~寄蒜几盒~~计算几何题,代码不到50行。 一个五元组能组成五角星当且仅当五个点都在凸包上,即存在五条连续的连边,使得极角序递增 阅读全文
posted @ 2019-04-21 16:24 OIerC 阅读(226) 评论(0) 推荐(0) 编辑
摘要: "题目" "传送门" Description $n$种颜色的球,每种$k$个,$(n,k\leq 2000)$将$n\cdot k$个球排成一排,把每种颜色最左边的那个涂成白色(初始不含白色),求不同序列个数。 Solution 考虑一种性质,该序列的前缀中白球个数应大于其他颜色的种类。 考虑$O( 阅读全文
posted @ 2019-04-20 22:28 OIerC 阅读(158) 评论(0) 推荐(0) 编辑
摘要: "题目传送门" Description $n​$种元素,构成$m​$个集合$(n,m\leq 10^6)$,保证集合互不相同且非空,且每个元素总出现次数为偶数,两种方案集合重新排列可互相得到算一种,求方案数。 Solution 开始做的时候不用管重新排列算重,只要最后除以$m!$即可。 设$f_i$ 阅读全文
posted @ 2019-04-20 22:10 OIerC 阅读(144) 评论(0) 推荐(0) 编辑