-
A:每个 r r r 维护与每个 l l l 的 g c d gcd gcd,会分成 log A i \log A_i logAi 段,暴力维护即可
-
B:考虑 R m i n , R m a x , B m i n , B m a x R_{min},R_{max},B_{min},B_{max} Rmin,Rmax,Bmin,Bmax 和全局 m i n , m a x min,max min,max 的关系,分为 R m i n = m i n , R m a x = m a x R_{min}=min,R_{max}=max Rmin=min,Rmax=max与 R m i n = m i n , B m a x = m a x R_{min}=min,B_{max}=max Rmin=min,Bmax=max 讨论,前一种情况要最小化 B m a x − B m i n B_{max}-B_{min} Bmax−Bmin,这个可以抽象成一个 2 n 2n 2n 的序列,每个点有两个颜色,选一段至少包涵 n n n 种颜色,那么可以双指针扫,后一种情况要最小化 B m i n ∗ R m a x − m a x ∗ B m i n − m i n ∗ R m a x B_{min}*R_{max}-max*B_{min}-min*R_{max} Bmin∗Rmax−max∗Bmin−min∗Rmax,考虑枚举 B m i n B_{min} Bmin,那么要最小化 R m a x R_{max} Rmax,这个等价于从开头开始扫,有 n n n 种颜色就停下来,考虑 B m i n B_{min} Bmin 只会占据一种颜色,那么特判一下即可,同时需要满足 B m i n B_{min} Bmin 向后有 n n n 种颜色,预处理一下限制即可
-
C:考虑维护 d p i , j dp_{i,j} dpi,j 表示当前在 i , j i,j i,j 的最小步数,存在两种转移
d p n x t , i = m i n ( d p i , j + ∣ j − n x t ∣ ) d p n x t , j = d p i , j + ∣ i − n x t ∣ dp_{nxt,i}=min(dp_{i,j}+|j-nxt|)\\ dp_{nxt,j}=dp_{i,j}+|i-nxt| dpnxt,i=min(dpi,j+∣j−nxt∣)dpnxt,j=dpi,j+∣i−nxt∣
全局加,单点改,求 m i n min min 把绝对值拆开线段树维护即可
【省选模拟】20/04/23(最优化专场)
最新推荐文章于 2021-05-16 15:53:52 发布