前言:炸没
T1
首先观察到,图形一定是凸的,如果是凹的就不满足条件
那么设\(f[i][l][r][p=0/1][q=0/1]\)表示到了i行,填l到r,\(1--k-1\)有没有左端点比l小的区间,右端点有没有比r大的区间
因为这几种情况互不干扰,所以可以做,暴力是\(O(n^5)\)的,但发现把决策的l,r写出是可以用前缀和优化的,于是就变成了\(O(n^3)\)
T2
考虑怎么处理转折点,即i和i+1决策不同,考虑批量处理连续的同样的,以U为例
首先设到i的最小的位置为k,设与i+1决策相同的相邻的有q个,设从k开始找长度为q+1的最长上升子序列,设最小的位置为\(k1\)
那么,我们断言,k1就是满足前i+q的最小位置,分类讨论即可证明
那么就可以对于转折点处理,用树状数组优化即可
T3
考虑总的决策数不会很多,因为有限制,于是直接暴力搜索即可
T4
算是一道比较好写好调的线段树题了
首先,考虑重心的性质,它的子树权值和一定不小于总的权值和的一半
再考虑深度最小带来的性质,即不小于改成大于
那么就考虑从一个一定在重心子树中的点开始倍增然后判断即可
这个点怎么找呢?把树dfs序求出,它的带权中点一定在其中
因为如果这个点如果不在,那么这个点的某个祖先一定更优,与定义矛盾
于是就可以直接做了,有点卡常,\(O(n\log^2 n)\)
—————————————————————————————————————————————————————————————————————————————————————————————
下次加油!!!