摘要:"BZOJ原题链接" "洛谷原题链接" 看上去就觉得是一道树形$\mathtt{DP}$,不过到头来我发现我写了一个贪心。。 显然对越靠近根(记为$r$)的边进行加权贡献越大,且同步的时间显然是从根到各个叶子节点的时间中的最大值。 于是先求出同步的时间,记$f[x]$表示从根到以$x$节点为根的子树
阅读全文
摘要:"原题链接" 当$n = 2$时,显然答案为$M(1, 2)$ 当$n = 3$时,我们固定$M(1, 2)$,考虑$3$的位置。 如图,$3$的位置肯定是从$(1,2)$中分支出来的,所以答案为$M(1, 2) + \dfrac{M(1, 3) + M(2, 3) M(1, 2)}{2}$。 于是
阅读全文
摘要:"BZOJ原题链接" "洛谷原题链接" 贪心或树形$DP$都可做,但显然$DP$式子不好推~~(因为我太菜了)~~,所以我选择贪心。 很显然从根出发主干走最长链是最优的,而剩下的点每个都需要走两步,所以用除去走最长链的步数的剩余步数除$2$(下取整)就是剩余能走的点数。
阅读全文
摘要:"原题链接" 先用素数筛筛下素数,然后考虑贪心去操作。 先求前缀$GCD$(求到$GCD$为$1$就不用再往下求了),得到数组$G[i]$,然后从后往前扫,如果$f(G[i]) using namespace std; const int N = 5010; const int M = 1e6; i
阅读全文
摘要:"BZOJ原题链接" "洛谷原题链接" 解决这题得先想到一个贪心:吃饭慢的先排队。 ~~并不会证明(感觉显然~~ 设$f[i][j][k]$表示已经排好了前$i$人,第一个队伍需要花费的打饭时间为$j$,第二个队伍需要花费的打饭时间为$k$,最后一个吃完饭的时刻。 显然这会$MLE$~~(滚动数组也
阅读全文
摘要:"BZOJ原题链接" "洛谷原题链接" 该题有两种做法,树形$DP$和贪心。 先讲贪心。 先将所有点按深度从大到小排序,然后从大到小依次取出点,若已经被覆盖则跳过,否则就在它的祖父点建立消防站。 考虑如何判断该点是否被覆盖,设数组$dis[x]$表示点$x$到达离它最近的消防站的距离。 则在扫到一个
阅读全文
摘要:一道贪心+LCA倍增法的预处理+二分答案 "原题链接" 又是一道细节贼多的题。。敲了我一个晚上。。 显然可以二分答案,然后就是判定的问题。 贪心地发现军队越在靠近首都的点建立检查站,则贡献越大。所以我们让所有军队都往首都靠近,这时所有军队要么无法到达首都的子节点,要么已经到达首都的子节点,而对于前者
阅读全文