$Noip2012 Luogu1081$ 开车旅行(倍增优化$ DP$)

Posted DTTTTTTT

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了$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$

以上是关于$Noip2012 Luogu1081$ 开车旅行(倍增优化$ DP$)的主要内容,如果未能解决你的问题,请参考以下文章

NOIP2012 luoguP1081 开车旅行 题解

[NOIP2012] 提高组 洛谷P1081 开车旅行

luogu1081 开车旅行2012 D1T3 (倍增,set,O2)

luogu1081 开车旅行 树上倍增

Luogu1081 开车旅行

P1081 开车旅行(Not Finish)