AtCoder 🟡 ABC434C Flapping Takahashi
🔗 🟡 ABC434C Flapping Takahashi
Problem Statement
題目簡述
高橋在時刻 處於高度 ,之後飛行 秒。每秒高度變化量的絕對值 ,且高度必須始終 。
給定 個目標:在時刻 ,高度須在 之間。問是否能同時滿足所有目標。
Constraints
約束條件
- 所有輸入為整數
思路:維護可能的區間
這是一道典型的動態維護可行區間的問題。
因為每一秒高橋高度的變化量在 之間,在任意給定時刻,高橋所有可能達到的高度必然會構成一個連續的閉區間 。我們可以依時間順序,漸進推導並更新這個區間。
初始狀態下,時間 ,初始高度為 ,因此起始區間為 。
1. 區間的自然延展
假設從上一個時刻 來到目前的目標時刻 ,經過的時間 。
在這 秒之內,可以達到的最低可能高度最多下降 ,最高可能高度最多上升 。因此,原區間會自然展開為 。
題目要求「飛行過程中高度必須始終 」。因此,即使展開後的理論下界 小於等於 ,高橋也可以在過程中調整高度使其維持在 及以上。
所以推導至當前時刻的預期合法區間 為:
2. 滿足當前目標需求
到達時刻 時,題目額外限制了高度必須位於 。這意味著高橋實際能處於的高度,必須同時滿足「預期可達到的範圍 」與「目標範圍 」。
也就是說,我們需要對這兩個區間取交集。
- 無解判定:如果目標區間與預期區間沒有重疊(也就是 或是 ),代表高橋無法在此刻抵達目標範圍內的任何一點,直接輸出
No。 - 狀態更新:如果存在重疊,則將當前維護的區間更新為兩者的交集:
我們只需依序處理每一個目標點,且過程中推斷出交集區域都不為空集合,即代表一定存在至少一條連續合法的飛行路線,最後輸出 Yes。
複雜度分析
- 時間複雜度:(每個測資線性掃描所有目標)
- 空間複雜度:(儲存目標列表,不考慮儲存輸入的話可優化為常數空間)
Code
1 | def solve(): |
寫在最後
The cover image was created by @floomf. All rights belong to the original artist.
It is used here only as a non-commercial cover illustration for this note. I do not claim ownership of the artwork.
If you are the copyright holder and believe this usage is inappropriate, please contact me by email or leave a comment. I will remove the image promptly.





![Luogu 🟣 P4062 [Code+#1] Yazid 的新生舞会](https://i.pixiv.cat/img-master/img/2026/04/13/04/07/06/143491427_p2_master1200.jpg)

