luogu P1081 开车旅行】的更多相关文章

传送门 解题思路 这道题刚了一下午,主要就刚在set那里了.先写了一个暴力70分..之后优化预处理,看着大佬神犇们都用的什么双向链表之类的东西,本蒟蒻不会,又懒得手写平衡树,就拿了个set搞了搞,感觉做麻烦了,我开了两个set,一个存正数一个存负数.因为STL只能求后继,然后每次先求最小,删掉再求次小,再加回来.预处理复杂度应该是nlogn,交了一发75,看了看lyd的书才知道要倍增.f[i][j][0/1]表示一共走了2^i天,在j这个城市,轮A/B开车的到达的城市,如果i=1 f[i][j]…
传送门 这题的暴力做法显然是照题意模拟,从每个点出发暴力跳.而这个暴跳显然是可以倍增优化的,就是预处理出从每个点,(一开始是A)往后跳\(2^k\)步,能到哪里,以及\(A\)和\(B\)的路程,然后暴力跳的时候倍增跳即可 // luogu-judger-enable-o2 #include<bits/stdc++.h> #define LL long long #define il inline #define re register #define db double #define ep…
P1081 开车旅行 题目描述 小AA 和小BB 决定利用假期外出旅行,他们将想去的城市从 11到 NN 编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 ii的海拔高度为H_iHi​,城市 ii和城市jj之间的距离 d_[i,j]d[​i,j]恰好是这两个城市海拔高度之差的绝对值,即d_[i,j]=|H_i-H_j|d[​i,j]=∣Hi​−Hj​∣. 旅行过程中,小 AA和小 BB 轮流开车,第一天小 AA 开车,之后每天轮换一次.他们计划选择一个城市 S…
题目描述 小 A 和小 B 决定利用假期外出旅行,他们将想去的城市从 1 到 N 编号,且编号较小的 城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 i 的海拔高度为 Hi,城市 i 和城市 j 之间的距离 d[i,j]恰好是这两个城市海拔高度之差的绝对值,即 d[i,j] = |Hi− Hj|. 旅行过程中,小 A 和小 B 轮流开车,第一天小 A 开车,之后每天轮换一次.他们计划 选择一个城市 S 作为起点,一直向东行驶,并且最多行驶 X 公里就结束旅行.小 A 和小 B…
https://www.luogu.org/problemnew/show/P1081…
小 A 和小 B 决定利用假期外出旅行,他们将想去的城市从 1 到 N 编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 i 的海拔高度为Hi,城市 i 和城市 j 之间的距离 d[i,j]恰好是这两个城市海拔高度之差的绝对值,即d[i,j] = |Hi− Hj|. 旅行过程中,小 A 和小 B 轮流开车,第一天小 A 开车,之后每天轮换一次.他们计划选择一个城市 S 作为起点,一直向东行驶,并且最多行驶 X 公里就结束旅行.小 A 和小 B的驾驶风格不同,小…
题目描述 小 A 和小 B 决定利用假期外出旅行,他们将想去的城市从 1 到 N 编号,且编号较小的 城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 i 的海拔高度为 Hi,城市 i 和城市 j 之间的距离 d[i,j]恰好是这两个城市海拔高度之差的绝对值,即 d[i,j] = |Hi− Hj|. 旅行过程中,小 A 和小 B 轮流开车,第一天小 A 开车,之后每天轮换一次.他们计划 选择一个城市 S 作为起点,一直向东行驶,并且最多行驶 X 公里就结束旅行.小 A 和小 B…
题目:https://www.luogu.org/problemnew/show/P1081 真是倍增好题! 预处理:f[i][j] 表示从 i 点开始走 2^j 次 AB (A,B各走一次)到达的点:   sta[i][j] 表示从 i 点开始走 2^j 次 AB 后 A 走过的总路程:stb 为 B 的: 首先要找到 2^0 位置上的,也就是右边最近的和次近的点: 先把点按海拔排序,那么最近点和次近点一定在 i-2 , i-1 , i+1 , i+2 这四个位置: 又不能找到 i 之前的点,…
Description: 就是两个人开车,只能向东开.向东有n个城市,城市之间的距离为他们的高度差.A,B轮流开车,A喜欢到次近的城市,B喜欢到最近的城市.如果车子开到底了或者车子开的路程已经超过了限制X就停. 问你从一个点出发,最后A行驶的里程数和B行驶的里程数. 倍增的妙用,这道题改变了我对NOIP的看法.让我对着书看了好久才看懂 不过70分还是好拿的,就是预处理然后对每个询问$O(n)$ 模拟一遍.复杂度$O(nlog_{2}n+nm)$ 怎么预处理?就是找到一个城市$i$后离他最近的城市…
https://www.luogu.org/problem/show?pid=1081 太遗憾了明明写出来了,却把最小值初始值弄小了,从第二个点开始就不可能对了.70分! #include<iostream> #include<cstdio> #include<queue> #include<cstring> #include<algorithm> #include<cmath> using namespace std; int n,…