NOIp2012开车旅行
思路
我觉得难的是预处理,非常的麻烦;倍增比较好理解;
首先可以用线段树啊,双向链表啊,平衡树啊,二叉搜索树啊什么的(雾),我用的是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开车旅行相关推荐
- NOIP2012 开车旅行
开车旅行 (drive.cpp/c/pas) [问题描述] 小 A 和小 B 决定利用假期外出旅行,他们将想去的城市从 1 到 N 编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度 ...
- NOIP2012开车旅行 【倍增】
题目 小 A 和小 B 决定利用假期外出旅行,他们将想去的城市从 1 到 N 编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 i 的海拔高度为Hi,城市 i 和城 ...
- NOIP2012 开车旅行 (倍增)
题意:一行N个城市,有各自不同的海拔,定义两个城市之间的距离为海拔之差的绝对值,小a和小b轮流开车,开车方向从左往右,小a总是开到第二近的城市,小b开到最近的城市(如有两个城市和当前城市海拔之差相等, ...
- [NOIp2012]开车旅行
Description Luogu1081 Solution 首先可以暴力模拟走的过程即可得70分. 观察暴力效率低下的原因,其一是向前走的时候比较慢,用倍增的思路优化即可.其二是读入时处理的每个点到 ...
- NOIP2012提高组 开车旅行 解题报告
开车旅行 题目描述 样例输入 样例输出 70分算法 暴力预处理出对于每一个点他右边最近.次近的点的编号,对于每一个询问,暴力模拟开车过程即可. 100算法 和上面一样我们得预处理出每一个点最近.次近的 ...
- 刷题记录(NC16562 开车旅行)(树上倍增)
NC16562 开车旅行 题目链接 关键点: 1.预处理:将所有点到达另一个点的最短和次短距离先求出 方法:利用set,从最后一个城市开始插入,每次插入到set中,查看左右是否存在有城市(即set是按 ...
- 【NOIP2012提高组】开车旅行
Description 现在有n个城市,每个城市有它的高度 Hi H_i,保证每个 Hi H_i互不相同.我们定义两个城市之间的距离 disi,j=|Hi−Hj| dis_{i,j}=|H_i-H_j ...
- 【NOIP2012】开车旅行
题目描述: 小 A 和小 B 决定利用假期外出旅行,他们将想去的城市从 1 到 N 编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 i 的海拔高度为 Hi,城市 ...
- P1081 [NOIP2012 提高组] 开车旅行(倍增)(动态规划)
洛谷传送门 文章目录 题目描述 解析 代码 题目描述 解析 利用倍增,设计dp慢慢敲即可... 注意距离累加在一起会爆int,需要ll 特判条件非常之复杂... 心力交瘁,就酱了 代码 #includ ...
最新文章
- JAVA实现HTTPserver端
- MATLAB常用数学函数
- 最长公共子序列问题LCS
- Kubernetes-ReplicaSet(RS)(五)
- C++--第17课 - 继承与多态 - 上
- oracle分区表 mysql_Oracle分区表的使用和管理
- 云栖号在线课堂—云服务器数据库快速入门特辑
- 2019牛客暑期多校训练营(第四场)----E-	triples II
- 利用useRef hooks 解决 定时器关闭不到的问题
- Javascript正则表达式表示固定开头和结尾的字符串
- 最安全的微信群管理工具推荐
- 微信小程序canvas实现签名功能
- C#正则表达式匹配任意字符
- google FireBase产品接入 —— FCM
- HAC集群添加新节点
- 自己动手做sidebar
- C++(Qt) 和 Word、Excel、PDF 交互总结
- 树莓派python离线语音识别_Raspberry Pi
- EBYTE E103-W02 WIFI模块配置总结(TCP+UDP+HTTP+云透传)
- 【讨论】品质因数,-从二阶传递函数分析自然谐振频率的含义。