摘要:
方便计算,我们将点B放到最右边,所有点向左放,将最左边点的位置标为1。如样例,变为 1 3 21 3 1 2 6 5 而B在26的位置。 设$dp_i$为在点$i$设置车站,之前随便的最小花费;$costs_i$为所有$i$位置之前的人从出发点走到$i$的分数;$pn_i$为$i$位置及$i$位置之 阅读全文
摘要:
其实NOIp之前就学会了...结果咕到了现在... 我们都知道堆。但是很少有人会手写堆。因为我们有STL,而且手写堆码量不小(据说是吧?没写过)。 而且堆的$Merge$操作又慢又麻烦。 于是就有了可并堆。 ~~即使c++也有自带的可并堆~~ 左偏树就是其中之一。 "Luogu模板题链接" 什么是左 阅读全文
摘要:
考虑维护每一个点以及它的子树中被派遣的忍者。 对于一个点,我们用类似树形DP的方式自底向上进行,先把它的所有孩子中被派遣的忍者放到一起,如果他们的薪水总和超过$m$,就不停地将其中薪水最大的忍者删除,直到薪水总和小于等于$m$。 找到所有点中领导能力和被派遣忍者数量乘积的最大值即可。 即维护数据结构 阅读全文
摘要:
斜率优化学会以后好像也不是那么难嘛。。。 以 "BZOJ1911" 为例 "在洛谷上查看" 设$s_i$为前$i$个元素的前缀和,$f_i$为dp数组。 $f_i=max\{f_j+a(s_i s_j)^2+b(s_i s_j)+c\}$ $f_i=max\{f_j+a(s_i^2 2s_is_j+ 阅读全文
摘要:
cf官方题解为数据结构维护贪心,时间复杂度$O(n^2logn)$。 但是这道题用wqs二分可以做到$O(nlog^2n)$。 第一次使用这个算法的时候甚至不知道它叫wqs二分。 有关wqs二分->wqs本人的课件 容易想到此题的$O(nab)$的做法,就是暴力dp。 暴力dp: #include< 阅读全文