$Noip2012\ Luogu1081$ 开车旅行 倍增优化$ DP$
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$
随机推荐
- js判断数组或对象是否相等
/** * 验证两个object 是否相同 * @param {Object} obj [需要进行验证的数据1] * @param {Object} newObj [需要进行验证的数据2] */ fu ...
- windows环境下安装nodeJS和express,一直提示command not found-配置环境变量
1.安装NodeJS后,使用npm指令安装express框架,使用 npm install -g express npm install -g express-generator 安装了大半天的时间, ...
- H3C 星型以太网拓扑扩展
- H3C MAC地址
- SuperSocket通过本地证书仓库的证书来启用 TLS/SSL
你也可以通过本地证书仓库的证书,而不是使用一个物理文件. 你只需要在配置中设置你要使用的证书的storeName和thumbprint: <server name="EchoServe ...
- vue+file-saver+xlsx导出table表格为excel
https://blog.csdn.net/wjswangjinsheng/article/details/91393396
- Python--day72--Django内置的serializers序列化介绍
序列化 Django内置的serializers def books_json(request): book_list = models.Book.objects.all()[0:10] from d ...
- 自动为DEV GridView控件添加SizeChanged事件
实现gdv设置的抽象对象,不用每个gdv控件都添加sizechanged事件,只需执行gdc绑定sql函数,在其中会自动添加SizeChanged事件. //2016.5.13 by sngk //根 ...
- sdk uncaught third Error Cannot assign to read only property 'constructor' of object '#<V>' (小程序)
sdk uncaught third Error Cannot assign to read only property 'constructor' of object '#<V>' 在a ...
- H3C 主机名与IP地址映射需求