zoukankan      html  css  js  c++  java
  • $Noip2012 Luogu1081$ 开车旅行 倍增优化$ DP$

    Luogu

    Description

    Sol

    1.发现对于每个城市,小A和小B的选择是固定的,可以预处理出来,分别记为ga[],gb[]

    2.并且,只要知道了出发城市和出发天数,那么当前城市和小A,小B各行驶的路程也是一定的,同样可以分别预处理出来

    具体怎么预处理:

    1.其实就是"邻值查找"

        简单讲一下,就是把所有城市的高度都存进set排好序,然后ga[i]一定是在set里与h[i]相邻的中最近的的,gb[i]是与h[i]相邻的中次近的

    2.倍增优化:

        1) 设$p[i][j][k]$表示从城市j出发,k第一个开车(k=0表示A,k=1表示B),已经行驶了2i天所到达的城市

        $p[0][j][1]=ga[j],p[0][j][0]=gb[j] $ 

        $i=1时,p[1][j][k]=p [0] [p[0][j][k]] [1-k]$

        $i>1时,p[i][j][k]=p[i-1] [p[i-1][j][k]][k]$

      2)设$a[i][j][k]$表示......小A行驶的路程

        $a[0][j][0]=dis(j,ga[j]),a[0][j][1]=0$

        $i=1时,a[1][j][k]=a[0][j][k]+a[0][p[0][j][k]][1-k]$

        $i>1时,a[i][j][k]=a[i-1][j][k]+a[i-1][p[i-1][j][k]][k]$

      3)设$b[i][j][k]$表示......小B....

        和小A类似...

    询问1:枚举出发城市,倒序枚举2的整数次幂保证总路程小于等于X

    询问2:直接倒序枚举2的整数次幂保证总路程小于等于X即可

    Code

    太难写了咕咕咕$qwq$

    光伴随的阴影
  • 相关阅读:
    1.Go环境安装
    IDEA启动Tomcat控制台中文显示乱码
    专注的含义
    翻出一封古老的信
    若有所思
    B+Tree与B-Tree 的区别
    Redis集群 什么是slots
    夜深人静,听雨
    随心所想
    本性可以改吗
  • 原文地址:https://www.cnblogs.com/forward777/p/11253961.html
Copyright © 2011-2022 走看看