用事实证明“超级无敌神仙炫酷无敌原神大王”豪华套餐不只有推式子和大ds!
第一问是简单的,记 $f_i$ 为以 $i$ 结尾的最多旧房子数,有 $$f_i=\max_{j\lt i,a_j \le a_i}{f_j+1}$$ 其中 $a_i=A_i-i$,容易用线段树维护。
考虑第二问,记 $g_i$ 为以 $i$ 结尾的最小花费,显然两个旧房子中间应该从前者开始递增建,同时要保证第一问最大,有 $$g_i=\min_{j\lt i,a_j\le a_i,f_j+1=f_i}\{g_j+\frac{(2a_j+i+j)*(i-j-1)}{2}+b_i\}$$ 其中 $b_i=A_i+B_i$。暴力转移可以拿 $40pts$。 注意到可以斜率优化,化一下式子, $$j^2+(2a_j+1)j-2g_j=2(i-1)a_j+i(i-1)+b_i-2g_i$$ 横坐标 $a_j$,纵坐标 $j^2+(2a_j+1)j-2g_j$,斜率 $2(i-1)$,维护上凸包。 然而转移条件有三个,$f_j+1=f_i$ 直接分层转移解决,剩下的是一个类似二位偏序的限制,考虑 cdq分治。 具体的,记当前转移 $f_i=d$ 的位置,当前分治区间为 $[l,r]$。考虑 $[l,mid]$ 中 $f_j=d-1$ 的位置对 $[mid+1,r]$ 中 $f_i=d$ 的位置的贡献,显然所有 $j\lt i$ 都满足,而对于 $a_j\le a_i$ 的限制,将两部分按 $a$ 升序排序后,使用双指针维护凸包即可。 时间复杂度 $O(n\log^2 n)$。记得对区间内没有有效位置的情况剪枝。
题目1859 [国家集训队2011]拆迁队
9
评论
2023-11-07 17:54:02
|