$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$
随机推荐
- Careers/Staffing Index
Careers/Staffing Index Not having data governance can hurt your business. Download this eBook to ...
- css半透明渐变过渡效果
效果图: 代码如下: background-image: -webkit-gradient(linear,left top, left bottom,from(rgba(255,255,255,0)) ...
- 【BestCoder Round #93 1002】MG loves apple
[题目链接]:http://acm.hdu.edu.cn/showproblem.php?pid=6020 [题意] 给你一个长度为n的数字,然后让你删掉k个数字,问你有没有删数方案使得剩下的N-K个 ...
- iOS设备 微信h5页面回退 内容不刷新的问题
原因分析: 一.android 浏览器 包括微信的开发者工具 都是ok的返回可以刷新页面但是唯有iOS不行. 二.iOS 浏览器原因:history.go(-1)返回上一页后,页面内容并不会刷新.在B ...
- vector容器、
一. vector 向量容器1. 创建 vector 对象(1)不指定容器大小vector<int> V;(2)指定容器大小vector<int> V(10);(3) ...
- java 创建线程方式
1.继承Thread类 子类覆写父类中的run方法,将线程运行的代码存放在run中. 建立子类对象的同时线程也被创建. 通过调用start方法开启线程. 2.实现Runnable接口 子类覆盖接口中的 ...
- java声明异常(throws)
在可能出现异常的方法上声明抛出可能出现异常的类型: 声明的时候尽可能声明具体的异常,方便更好的处理. 当前方法不知道如何处理这种异常,可将该异常交给上一级调用者来处理(非RuntimeExceptio ...
- python基础九之函数
1,函数的定义 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数分为自定义函数和内置函数,内置函数就是python内部自带的一些函数,如:print().int()等.自定义函数 ...
- win10 uwp 使用 Azure DevOps 自动构建
通过 Azure DevOps 可以做到自动构建程序,覆盖计划.创建.编程.测试.部署.发布.托管.共享等各个环节,适用于大多数的语言.平台. 本文继续使用图床为例告诉大家如何使用 Azure Dev ...
- 初学ServiceMix
因为老板给的毕业题目是ESB相关,需要学下ServiceMix(版本7.0.1) 但是SOA这东西技术上比较旧,加上主要是企业在用,个人学习的不多,所以资料比较少 CSDN上看到篇文章不错但是有些地方 ...