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