摘要:
以前并不知道这个trick。 $01BFS$,在$bfs$的时候用一个双端队列来维护,如果边权为$1$就添加到队尾,边权为$0$就添加到队首。 还有一个小trick就是我们可以开一个$dis$数组来代替$vis$数组做类似于$dp$的操作,因为双端插入的特性使$vis$的表示可能产生歧义,每一次能更 阅读全文
摘要:
以后要记得复习鸭 BZOJ 4557 大佬的博客 状态十分好想,设$f_{x, i}$表示以覆盖完$x$为根的子树后还能向上覆盖$i$层的最小代价,$g_{x, i}$表示以$x$为根的子树下深度为$i$还没有被覆盖的最小代价。 那么对于每一个关键点,有初态: $f_{x,0} = g_{x, 0} 阅读全文
摘要:
BZOJ 2212 从下到上线段树合并。 考虑到每一个子树内部产生的贡献不可能通过换儿子消除,所以一次更换只要看看把哪个儿子放在左边产生的逆序对数少就可以了。 逆序对数可以在线段树合并的时候顺便算出来。 由于只有叶子结点有权值 + 二叉树的特性,大大方便了这道题的代码和细节处理。 注意点数总共要开到 阅读全文
摘要:
大家一起膜Rorshach。 一般的$bfs$会造成有一些点访问不到的情况,在$system\ test$的时候会$WA40$(比如我……)。 发现这张地图其实是一个边权只有$0/1$的图,我们需要计算的是从$(r, c)$开始到每一个点的最短路,因为边权只有两种的特性,我们可以用一个双端队列,每一 阅读全文
摘要:
BZOJ 1112。 题意相当于在一个长度为$k$的区间内选择一个数$s$使$\sum_{i = 1}^{k}\left | a_i - s \right |$最小。 很显然是中位数。 然后只要写一个能查询长度为$k$的区间的中位数,以及小于和大于这个中位数的总和和个数的数据结构即可。 线段树平衡树 阅读全文
摘要:
初赛滚粗的我含着眼泪写代码…… 设$f_{l, r, 0/1}$表示$[l, r]$的区间的队伍排列好,且最后一个插进去的在左边$(0)$/右边$(1)$的方案数,那么有初态$f_{i, i, 0} = 1$。 转移的时候只要对比一下左边的数和右边的数和最后一个插入的数的大小关系就可以确定转移到$0 阅读全文
摘要:
BZOJ 1415 简单期望 + 记忆化搜索。 发现聪聪每一步走向的地方是在可可的所在位置确定时是确定的,设$nxt_{x, y}$表示聪聪在$x$,可可在$y$时聪聪下一步会走到哪里,我们先预处理出这个$nxt$。 为了预处理$nxt$,我们还需要先预处理一个$d_{x, y}$表示$x$到$y$ 阅读全文
摘要:
题面不好找放一个吧。 Description 描述 在有$N$个地级市的H省,政府为了城市开发建设,决定先修路,后造房子,以吸引外来人员。一开始每个城市中有$b_i$个住户,而在两个城市$u,v$之间建路需要的代价就是$R$乘以$u,v$两个城市的住户数目之和。建路的目标是使得所有城市相互之间都可达 阅读全文
摘要:
依靠堆完成贪心。 维护一个小根堆,扫描每一天的价格,如果之前的最小价格比它小就直接丢到堆里面去,如果比它大就累加答案并丢弃之前的最优解,然后把这个价格入队两次。 考虑一下为什么要入队两次,一次就相当于在这一天购买,一次代表以后反悔,答案累加之后就相当于在之前丢弃掉的地方买入在新的地方卖出,这样子一定 阅读全文
摘要:
以前的$C$题难度也不会写啊。 结论:答案一定是两个点一条边所构成的子图。 证明: 假设有点$x, y$由边权为$p$的边连接,点$y, z$由边权为$q$的两条边连接,只需证明在$\frac{x + y}{p},\frac{y + z}{q},\frac{x + y + z}{p + q}$中,$ 阅读全文