思路

我觉得难的是预处理,非常的麻烦;倍增比较好理解;
首先可以用线段树啊,双向链表啊,平衡树啊,二叉搜索树啊什么的(雾),我用的是set,倒序查找(因为只能走到比当前点序号要大的点),在set中查找当前的元素,然后找左边的两个,右边的两个(要注意判断是否有该元素),然后用nextA[i].,nextB[i],记录在点i,A和B分别要走到哪一点,lenA[i],lenB[i],记录点i,j走到nextA[i],nextB[i]所走的路程;处理完之后就可以循环一遍,更新g[i][0],f[i][0][0],f[i][0][1],(g[i][j]表示从点i出发,走了2^j轮(!!!注意是轮)后到达的点,f[i][j][0],表示点i出发经过2^j轮后到达的点,小A走的路径和,f[i][j][1]表示小B走的路径和);那么g[i][0]=next2[next[1]],f[i][0][0]=lenA[i],f[i][0][1]=lenB[next1[i]];仔细理解下;处理完之后就可以倍增了;
转移方程:
g[i][j]=g[g[i][j-1]][j-1];
f[i][j][0]=f[i][j-1][0]+f[g[i][j-1]][j-1][0];
f[i][j][1]=f[i][j-1][1]+f[g[i][j-1]][j-1][1];之后就是处理询问了,从log2(n)开始枚举,如果能走就走,不能走继续下一个,要注意一点,枚举完之后要判断小A是不是能够再走一步,对于第一个询问,要注意精度的问题,把除法转化为乘法;

NOIp2012开车旅行相关推荐

  1. NOIP2012 开车旅行

    开车旅行 (drive.cpp/c/pas) [问题描述] 小 A 和小 B 决定利用假期外出旅行,他们将想去的城市从 1 到 N 编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度 ...

  2. NOIP2012开车旅行 【倍增】

    题目 小 A 和小 B 决定利用假期外出旅行,他们将想去的城市从 1 到 N 编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 i 的海拔高度为Hi,城市 i 和城 ...

  3. NOIP2012 开车旅行 (倍增)

    题意:一行N个城市,有各自不同的海拔,定义两个城市之间的距离为海拔之差的绝对值,小a和小b轮流开车,开车方向从左往右,小a总是开到第二近的城市,小b开到最近的城市(如有两个城市和当前城市海拔之差相等, ...

  4. [NOIp2012]开车旅行

    Description Luogu1081 Solution 首先可以暴力模拟走的过程即可得70分. 观察暴力效率低下的原因,其一是向前走的时候比较慢,用倍增的思路优化即可.其二是读入时处理的每个点到 ...

  5. NOIP2012提高组 开车旅行 解题报告

    开车旅行 题目描述 样例输入 样例输出 70分算法 暴力预处理出对于每一个点他右边最近.次近的点的编号,对于每一个询问,暴力模拟开车过程即可. 100算法 和上面一样我们得预处理出每一个点最近.次近的 ...

  6. 刷题记录(NC16562 开车旅行)(树上倍增)

    NC16562 开车旅行 题目链接 关键点: 1.预处理:将所有点到达另一个点的最短和次短距离先求出 方法:利用set,从最后一个城市开始插入,每次插入到set中,查看左右是否存在有城市(即set是按 ...

  7. 【NOIP2012提高组】开车旅行

    Description 现在有n个城市,每个城市有它的高度 Hi H_i,保证每个 Hi H_i互不相同.我们定义两个城市之间的距离 disi,j=|Hi−Hj| dis_{i,j}=|H_i-H_j ...

  8. 【NOIP2012】开车旅行

    题目描述: 小 A 和小 B 决定利用假期外出旅行,他们将想去的城市从 1 到 N 编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 i 的海拔高度为 Hi,城市 ...

  9. P1081 [NOIP2012 提高组] 开车旅行(倍增)(动态规划)

    洛谷传送门 文章目录 题目描述 解析 代码 题目描述 解析 利用倍增,设计dp慢慢敲即可... 注意距离累加在一起会爆int,需要ll 特判条件非常之复杂... 心力交瘁,就酱了 代码 #includ ...

最新文章

  1. JAVA实现HTTPserver端
  2. MATLAB常用数学函数
  3. 最长公共子序列问题LCS
  4. Kubernetes-ReplicaSet(RS)(五)
  5. C++--第17课 - 继承与多态 - 上
  6. oracle分区表 mysql_Oracle分区表的使用和管理
  7. 云栖号在线课堂—云服务器数据库快速入门特辑
  8. 2019牛客暑期多校训练营(第四场)----E- triples II
  9. 利用useRef hooks 解决 定时器关闭不到的问题
  10. Javascript正则表达式表示固定开头和结尾的字符串
  11. 最安全的微信群管理工具推荐
  12. 微信小程序canvas实现签名功能
  13. C#正则表达式匹配任意字符
  14. google FireBase产品接入 —— FCM
  15. HAC集群添加新节点
  16. 自己动手做sidebar
  17. C++(Qt) 和 Word、Excel、PDF 交互总结
  18. 树莓派python离线语音识别_Raspberry Pi
  19. EBYTE E103-W02 WIFI模块配置总结(TCP+UDP+HTTP+云透传)
  20. 【讨论】品质因数,-从二阶传递函数分析自然谐振频率的含义。

热门文章

  1. WPS 2019如何让长表格在每一页都显示表头(标题行)
  2. Dark Wonder(暗黑奇侠)学习笔记
  3. Mac osX 添加自定义字体库
  4. Linux 命令行远程下载文件curl,wget
  5. python函数指针
  6. rust布料怎么弄_rust材料获得大全 | 手游网游页游攻略大全
  7. CSS字体大小: em与px、pt、百分比之间的对比
  8. CAM350可制造性分析工具
  9. WebView 初始化失败
  10. 课课通c语言pdf,非常课课通 科学 七年级 下 配浙教版 最新升级版.pdf