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$

    光伴随的阴影
  • 相关阅读:
    973. K Closest Points to Origin
    919. Complete Binary Tree Inserter
    993. Cousins in Binary Tree
    20. Valid Parentheses
    141. Linked List Cycle
    912. Sort an Array
    各种排序方法总结
    509. Fibonacci Number
    374. Guess Number Higher or Lower
    238. Product of Array Except Self java solutions
  • 原文地址:https://www.cnblogs.com/forward777/p/11253961.html
Copyright © 2011-2022 走看看