码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-07-29 09:57:13      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:就是   bsp   alt   blank   mil   body   图片   lan   直接   

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$)

标签:就是   bsp   alt   blank   mil   body   图片   lan   直接   

原文地址:https://www.cnblogs.com/forward777/p/11253961.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!