「NOI2012」美食节-费用流
· ☕ 3 min read

美食节共有 $n$ 种不同的菜品,每个同学都点了一份在这 $n$ 个菜品中的菜。总共有 $m$ 个厨师来制作这些菜品。厨师们会按照要求的顺序进行制作,并且每次只能制作一人份。第 $j$ 个厨师制作第 $i$ 种菜品的时间记为 $t _ {i,j}$ 。每个同学的等待时间为所有厨师开始做菜起,到自己那份菜品完成为止的时间总长度。总等待时间为所有同学的等待时间之和。

已知共有 $n$ 种菜品,第 $i$ 种菜品需要做 $p_i$ 份,共有 $m$ 个厨师。请计算出最小的总等待时间是多少。


衡水中学游记
· ☕ 7 min read

衡水市,2017年常住人口446.0万人,GDP1550.1亿元,人均GDP3.47万元,衡水市教育局预算支出68644.4万元。

北京市海淀区,2017年常住人口348.0万人,GDP5915.3亿元,人均GDP17.00万元,海淀区教育委员会预算支出1038648.0万元。

X大附中,高中在校生约3000人,一本率近100%,清北录取人数119人。

河北衡水中学,在校生约10000人,一本率超过85%,清北录取人数175人。


「NOI2009」二叉查找树-区间dp
· ☕ 3 min read

给定 $n$ 个结点的数据值 $V_i$ ,权值 $P_i$ ,访问频度 $T_i(T_i \geq 0)$ 。对于 $\forall i,j \in V$ 且 $i \neq j$ ,有 $V_i \neq V_j, P_i \neq P_j$ 。

现令这 $n$ 个点组成一颗二叉树,且满足 $\forall \, i \in V$ ,若 $p$ 为 $i$ 的左子节点, $q$ 为 $i$ 的右子节点,则 $V_p < V_i < V_q$ 且 $P_i < P_p,\; P_i < P_q$ 。可以证明,这样的二叉树是唯一的。点$i$ 在树中的深度 $D_i$ 定义为它到根的距离加 $1$ 。定义结点 $i$ 的访问代价 $E_i = T_i \times D_i$ 。可以修改每个点的权值为任意实数,其代价均为给定的正整数 $K$ ,但需保证任两点权值仍互不相同。

现求上文所述二叉树中,其 $\sum^n _ {i = 1}{E_i} + \sum K$ 的最小值。


「SCOI2010」连续攻击游戏-二分图匹配
· ☕ 2 min read

lxhgww 最近迷上了一款游戏,在游戏里,他拥有 $n$ 个装备( $n \le 1000000$ ),每种装备都有 $2$ 个属性,这些属性的值用 $[1,10000]$ 之间的数表示。当他使用某种装备时,他只能使用该装备的某一个属性。并且每种装备最多只能使用一次。

游戏进行到最后, lxhgww 遇到了终极 boss ,这个终极 boss 很奇怪,攻击他的装备所使用的属性值必须从 $1$ 开始连续递增地攻击,才能对 boss 产生伤害。现在lxhgww想知道他最多能连续攻击 boss 多少次?


「Luogu3765」总统选举-平衡树-线段树
· ☕ 3 min read

秋之国共有 $n$ 个人,分别编号为 $1,2,...,n$ ,一开始每个人都投了一票,范围 $[1,n]$ ,表示支持对应编号的人当总统。共有 $m$ 次预选,每次选取编号 $[l_i,r_i]$ 内的选民展开小规模预选,在该区间内获得超过区间大小一半的票的人获胜,如果没有人获胜,则由小 C 钦定一位候选者获得此次预选的胜利(获胜者可以不在该区间内),每次预选的结果需要公布出来,并且每次会有 $k_i$ 个人决定将票改投向该次预选的获胜者。全部预选结束后,公布最后成为总统的候选人,没有候选人的话输出 $-1$ 。


「CQOI2012」交换棋子-费用流
· ☕ 2 min read

有一个 $n$ 行 $m$ 列的黑白棋盘,你每次可以交换两个相邻格子(相邻是指有公共边或公共顶点)中的棋子,最终达到目标状态。要求第 $i$ 行第 $j$ 列的格子只能参与 $m _ {i,j}$ 次交换。

输出仅一行,为最小交换总次数。如果无解,输出 $-1$ 。


「国家集训队」聪聪可可-点分治
· ☕ 2 min read

有一颗 $n$($n<20000$)个节点的树,每条边都有边权。接下来由聪聪和可可分别随即选一个点,如果两点之间简单路径上的边权和是 $3$ 的倍数,则判聪聪赢,否则可可赢。

聪聪非常爱思考问题,希望知道对于这张图自己的获胜概率是多少。


点分治学习笔记
· ☕ 3 min read

点分治是一种主要在树上的分治,可以在解决一些树上特定条件的路径的问题。其复杂度与大部分分治类似,大概是 $O(K \; \log{n})$( $K$ 为除分治步骤之外的时间复杂度的多项式)。


「NOI2015」软件包管理器-树链剖分
· ☕ 3 min read

你决定设计你自己的软件包管理器。如果软件包 A 依赖软件包 B ,那么安装软件包 A 以前,必须先安装软件包 B 。同时,如果想要卸载软件包 B ,则必须卸载软件包 A 。现在你已经获得了所有的软件包之间的依赖关系。除 $0$ 号软件包以外,所有软件包都会依赖一个且仅一个软件包,而 $0$ 号软件包不依赖任何一个软件包。依赖关系不存在环。

现在有一些安装或卸载软件包的操作,需要求出这个操作实际上会改变多少个软件包的安装状态(即安装操作会安装多少个未安装的软件包,或卸载操作会卸载多少个已安装的软件包)。