tg 22 题解
T1
这次的期望题并不是简单的推式子了
这nm是计数DP啊
先简单的定义一下阶段状态决策?
考虑这么一个事就是:$$\Large 2的父亲永远是1$$
抓住这个不变量做DP
\(\LaTeX\)敲麻了仙姑了
T2
首先一个套路就是$$\Large 最小值最大$$
这种情况下考虑二分答案,即可获得\(80pts\):
对于一个当前长度\(len\)来说,
如果以星星为圆心,\(len\)为半径的所有圆的并覆盖了一条距离
显然这个\(len\)就是不合法的
到这里时间复杂度是\(O(n^2\log n)\)
考虑消掉一个\(\log\)
可以推演一波二分的最终结果:最小生成树上的最长边的一半
如果\(len\)大于这个数,必然有生成树会覆盖掉整个距离(最小生成树),就是猜大了
小于的话,最长边是没有覆盖住的,也就是说任意的距离都不会被完全覆盖,就是猜小了
所以只需要求下最小生成树即可
稠密图的话\(V=\Theta( E^2)\)
选\(Prim\)是比较合适的,同时\(Kruskal\)显然是会被卡掉的\(O(E^2\log E)\)
T3
对于一个位置\(i\)来说:如果\(\exist j,k,p_j>p_i>p_k \and j<i<k\)
那么\(j,k\)是可以不用花费代价的
那么题意等价转化为:找出\(p\)的一个极长上升子序列,使得权值最小
显然是可以\(O(n^2)DP\)搞一搞
正解就是线段树维护单调栈优化一下
T4
除式的最小值?有$\cdot $意思
赛时准备化成斜率优化的式子但是不会写树上斜优
但是斜优一般是截距式
这种除式(斜率式)似乎应该直接考虑凸包
维护的式子是这样的:
要是要求斜率尽可能的大,就要维护一个下凸包
画下图感性理解一下
然后就是维护凸包的弹栈
暴力弹栈时间复杂度是\(O(n^2)\)
考虑到删点必然是删掉后缀,也就是离得近的祖先
然后就可以倍增优化到\(O(n\log n)\)

浙公网安备 33010602011771号