• 金牌导航刷题小记


    I.P3232 [HNOI2013]游走

    看到求数学期望,情不自禁就想要来一波动态规划。先推转移方程:

    (f(x))表示游走到第(x)个节点的期望次数(g(i))表示第(i)条边被经过的期望次数

    对于(g(i)),有[1]

    [g(i)=dfrac{f(u)}{operatorname{deg}(u)}+dfrac{f(v)}{operatorname{deg}(v)},i=(u,v) ]

    其中,(operatorname{deg})表示节点的度数。

    考虑如何计算(f(i)),先推式子[2]

    [f(i)=sumlimits_{xin S_i}dfrac{f(x)}{operatorname{deg}(x)} ]

    特殊的,

    [f(1)=1+sumlimits_{xin S_1}dfrac{f(x)}{{ m deg}(x)}\f(n)=1 ]

    状态转移方程显然是有后效性的,怎么办?

    注意到(n)其实较小,可以(Theta(n^3))大力高斯消元。

    最后按照经过边的期望次数贪心即可。

    II.P2605 [ZJOI2010]基站选址

    III.P5939 [POI1998]折线

    IV.P3287 [SCOI2014]方伯伯的玉米田

    直接推式子。

    [f(i, j)=max_{k<i,a_k+lleq a_i+j,lleq j}{f(k, l)}+1 ]

    发现是个三维偏序。可以上二维树状数组/线段树或者CDQ。

    V.P4072 [SDOI2016]征途

    先推式子。

    [displaystyle vm^2=msumlimits_{i=1}^m(x_i-overline{x})^2=m(sum_{i=1}^mx_i^2-2sum_{i=1}^m x_ioverline x+sum_{i=1}^moverline x^2)=msum_{i=1}^mx_i^2-(sum_{i=1}^mx_i)^2 ]

    因此我们要最小化(sumlimits_{i=1}^mx_i^2),其中,(x_i)表示第(i)天行走的路程。

    接着就是套路的整数划分问题了。

    [f(i,j)=min_{k<i}{f(k,j-1)+({ m sum}_i-{ m sum}_k)^2} ]

    时间复杂度(Theta(N^3)),考虑斜率优化。

    [f(k_1,j-1)+({ m sum}_i-{ m sum}_{k_1})^2<f(k_2,j-1)+({ m sum}_i-{ m sum}_{k_2})^2iff frac{f(k_1,j-1)+sum_{k_1}^2-(f(k_2,j-1)+sum_{k_2}^2)}{{ m sum}_{k_1}-{ m sum}_{k_2}}<2{ m sum}_i ]

    也就是要维护一个下凸包。单调队列做一下就好了。

    VI.P2467 [SDOI2010]地精部落


    1. 更严谨一些,应当是(g(i)=[u ot=n]dfrac{f(u)}{operatorname{deg}(u)}+[v ot=n]dfrac{f(v)}{operatorname{deg}(v)}) ↩︎

    2. 同样的,式子中的(x ot=n) ↩︎

  • 相关阅读:
    观察者模式
    如何通过反射创建对象?
    java8新特性
    idea 常用快捷键--标蓝
    java多线程基础篇-01
    zookeeper单机版及操作
    redis和jedis常用api
    Mac连接服务器
    redis基本介绍及安装01
    docker 安装mobsf及部分命令01
  • 原文地址:https://www.cnblogs.com/GDOI2018/p/14614697.html
Copyright © 2020-2023  润新知