随笔分类 -  OJ--洛谷

摘要:第一类$Stirling$数 $\begin{bmatrix} n \\ m \\ \end{bmatrix}$表示$n$个元素组成$m$个圆排列的方案数。 何为圆排列?即通过排列在一个环上,两两不能通过旋转相互得到的排列的个数。 $$ \begin{bmatrix} n \\ m \\ \end{ 阅读全文
posted @ 2019-05-04 23:28 OIerC 阅读(398) 评论(0) 推荐(0)
摘要:概要 $Catalan$数的递推式: $$ C_{n+1}=\sum_{i=0}^{n}C_i\cdot C_{n i} \tag{1} $$ $$ C_n=C_{n 1}\cdot\frac{4n 2}{n+1} \tag{2} $$ $Catalan$数的递推解(通项式): $$ C_n=\fr 阅读全文
posted @ 2019-04-30 23:36 OIerC 阅读(263) 评论(0) 推荐(0)
摘要:李超线段树是什么?在平面直角坐标系中,它支持插入一条线段(直线),询问$x=x_0$时与它相交的线段中$y$的最大(小)值。 它是如何维护的?抽象的说,就是 标记永久化线段树维护区间内从$y=\infty$往下看没有被覆盖的长度最大的直线 标记永久化 是什么?就是不用$pushdown$啦,不懂可以 阅读全文
posted @ 2019-04-29 21:43 OIerC 阅读(316) 评论(0) 推荐(0)
摘要:标记永久化是线段树的一个技巧,常用于无法(或难以)进行$pushdown$的较复杂的数据结构如主席树,树套树等。 如何做?对每个节点维护$sum$和$add$。 考虑修改,当询问与当前区间重合时,更新$add+=val$,对所有经过的区间$sum+=val\cdot (r l+1)$。 考虑询问,累 阅读全文
posted @ 2019-04-29 21:18 OIerC 阅读(502) 评论(0) 推荐(0)
摘要:左偏树能干什么?它支持$O(logn)$完成插入,删除,查询最值,合并。 看到前三个我们想到堆(优先队列),所以左偏树是可并堆的一种。 说到可并堆,主要有左偏树,配对堆,二项堆,斐波那契堆等几种。而$OI$界主要使用前两种,主要是好写的缘故。 配对堆似乎是一种比左偏树时间复杂度及常数更小且代码复杂度 阅读全文
posted @ 2019-04-28 23:29 OIerC 阅读(333) 评论(0) 推荐(0)
摘要:谨以此文向人工智能先驱,$A$ 算法发明者 "$Nils\ Nilsson$" 致敬 推 "一篇深入研究的博客" ,而本文更多是粗略理解和习题吧。 $A$ 算法是什么?它是启发式搜索的一种,即广度搜索算法$bfs$加上估价函数。 而$IDA$ 则是另一种类似的启发式搜索,是迭代加深$dfs$加上估价 阅读全文
posted @ 2019-04-25 22:12 OIerC 阅读(1067) 评论(0) 推荐(0)
摘要:启发式算法是什么? 启发式算法是基于人类的经验和直观感觉,对一些算法的优化。 比如说启发式搜索$A$ 算法。 启发式合并是什么? 考虑一个问题:把$n$个总元素个数为$m$的数据结构合并起来(假设是线性的)。 每次合并复杂度最坏$O(m)$,总复杂度$O(nm)$?显然无法接受。 每次把个数少的合并 阅读全文
posted @ 2019-04-23 23:44 OIerC 阅读(3986) 评论(3) 推荐(4)
摘要:线段树合并说全来就是动态开点权值线段树合并。所以你需要掌握权值线段树的基本知识以及知道什么是动态开点(雾 线段树合并的主要方式如下: 对于两棵线段树都有的节点,新的线段树的该节点值为两者和。 对于某一棵线段树有的节点,新的线段树保存该节点的值。 然后对左右子树递归处理。 不能理解?那就看一下代码。 阅读全文
posted @ 2019-04-23 23:21 OIerC 阅读(3207) 评论(0) 推荐(2)
摘要:搜索是$OI$中一个十分基础也十分重要的部分,近年来搜索题目越来越少,逐渐淡出人们的视野。但一些对搜索的优化,例如$A$ ,迭代加深依旧会不时出现。本文讨论另一种搜索——折半搜索$(meet\ in\ the\ middle)$。 由一道例题引入: "CEOI2015 Day2 世界冰球锦标赛" 我 阅读全文
posted @ 2019-04-22 19:14 OIerC 阅读(610) 评论(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 阅读(259) 评论(0) 推荐(0)
摘要:"题目传送门" Description $n​$种元素,构成$m​$个集合$(n,m\leq 10^6)$,保证集合互不相同且非空,且每个元素总出现次数为偶数,两种方案集合重新排列可互相得到算一种,求方案数。 Solution 开始做的时候不用管重新排列算重,只要最后除以$m!$即可。 设$f_i$ 阅读全文
posted @ 2019-04-20 22:10 OIerC 阅读(151) 评论(0) 推荐(0)
摘要:"题目传送门" Description 给定$r$,求满足$x^2+y^2=r^2$的整数解组数。 Solution 先丢一个$3Blue1Brown$的科普向视频: "隐藏在素数规律中的$\pi$" 视频的前$20$分钟就足以解决这道题了,但还是建议看完。 视频中并没有证明费马平方和定理,由于证明 阅读全文
posted @ 2019-04-20 21:23 OIerC 阅读(141) 评论(0) 推荐(0)
摘要:Description 给定一个$N$个点$M$条边的$DAG(N,M\leq10^6)$,边权为$1$。删去一个点,使剩余图中的最长路径最短,求删去的点和最长路径长度。 Solution 神仙而有趣的一题$Orz$,可能讲的不是很清楚$QAQ$ 先求出终点为$u$的最长路$f_u$和起点为$u$的 阅读全文
posted @ 2019-04-19 21:34 OIerC 阅读(144) 评论(0) 推荐(0)
摘要:单调栈,顾名思义,就是一个元素递增(或递减)的栈。 一个单调递增的单调栈可以在$O(n)$的复杂度内求得序列内一个元素向左或向右第一个小于等于该元素的元素位置。 比如该序列为$1,5,2,6,4,3$ $1$进栈,栈内无元素,$L_1=0$ $(1)$ $5​$进栈,无出栈,$L_2=1​$(栈顶元 阅读全文
posted @ 2019-04-19 20:47 OIerC 阅读(917) 评论(0) 推荐(0)
摘要:前置技能 1、二分答案 2、基础数据结构,如树状数组,线段树。 首先,二分答案求最大值的最小值大概长成下面这个样子: int solve(int l, int r) { while (l<r) { int mid=l+r>>1; if (check(mid)) l=mid+1; else r=mid 阅读全文
posted @ 2019-04-09 23:33 OIerC 阅读(180) 评论(0) 推荐(0)
摘要:拉格朗日插值主要用于求解如下问题: 给出$n$个二维点$(x_i,y_i)$,找出过所有点的多项式$f(x)$在$x$处的取值(通常$x$较大) 考虑对于每个点构造函数$f_i(x)$使得$f_i(x_i)=y_i$,且$\forall x_j(j\neq i) f_i(x_j)=0$。 如何满足后 阅读全文
posted @ 2019-04-04 00:39 OIerC 阅读(796) 评论(0) 推荐(0)
摘要:先推荐一篇对我帮助很大的博客: "Kruskal重构树入门" 前置知识 1、$Kruskal$算法 2、基础数据结构,如 "主席树" 简述 $Kruskal$重构树与$Kruskal$算法密切相关。 我们知道,$Kruskal$算法是按照边权排序,依次合并节点,并用并查集维护联通。 $Kruskal 阅读全文
posted @ 2019-04-02 23:57 OIerC 阅读(4448) 评论(3) 推荐(3)