10178. 「一本通 5.5 例 4」旅行问题

题意

John 打算驾驶一辆汽车周游一个环形公路。公路上总共有 $n$ 车站,每站都有若干升汽油(有的站可能油量为零),每升油可以让汽车行驶一千米。John 必须从某个车站出发,一直按顺时针(或逆时针)方向走遍所有的车站,并回到起点。在一开始的时候,汽车内油量为零,John 每到一个车站就把该站所有的油都带上(起点站亦是如此),行驶过程中不能出现没有油的情况。 任务:判断以每个车站为起点能否按条件成功周游一周。 可以输出TAK否则输出NIE

思路

先考虑顺时针 设$a_i$表示从$i$站到下一站,车内的汽油增加(减少)了多少。 设$sum_i$表示$a_i$的前缀和,那么如果要判断从某个车站出发是否能周游一周其实就是判断$sum_i-sum_{i-1},sum_{i+1}-sum_{i-1} \dots sum_{i+n-1}-sum_{i-1}$是否有负数,也就是$sum_i,sum_{i+1} \dots sum_{i+n-1}$ 的最小值减去$sum_{i-1}$是否为负数,我们知道,求最小值可以使用RMQ算法(当然线段树也可以),所以使用RMQ+ST表就可以做出顺时针是否可以绕一圈了。 至此,你已经得到了20分。 再考虑逆时针,与顺时针刚好相反。部分量需要变化。 比如逆时针判断
$sum_i,sum_{i+1} \dots sum_{i+n-1}$ 的最小值减去$sum_{i-1}$是否为负数时,如果为负数则代表$i+n-1$不行,而不是$i$。 逆时针的初始也要更新,与顺时针不同: 然后更新$sum$数组。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇