題意
設一個好的序列由 \(a_0\) 與 \(a_1\) 生成而來。
滿足,對於 \(1 < i < n\),\(a_{i - 1}, a_i, a_{i + 1}\) 中最大一個數等於其他兩個之和,以及所以元素都不小於 \(k\)。
有 \(T\) 次詢問,每次給定 \((a_0, a_1, x, y, k)\) 滿足限制,且有序列 \(a\) 中有兩項相鄰依次為 \(x, y\)。
\(n \le 10 ^ 9\)
Sol
不難發現,因為操作顯然可逆,我們可以找到中間點 \((c, d)\) 使得從 \((a_0, a_1)\) 操作至 \((c, d)\) 且 \((y, x)\) 操作至 \((d, c)\)。
考慮用一些方式對映一個序列,使得存在這樣的 \((c, d)\) 可以用來表示整個序列。
顯然注意到 \(k\) 的限制,因此考慮下界。手玩一下可以發現,事實上加法是沒有用的,因為一次加法後進行兩次減法後序列最後兩位不變:
\(a, b \to a, b, a + b \to a, b, a + b, a \to a, b, a + b, a, b\)
然後我們又可以顯然發現若序列中只存在一次加法後面只有一次減法的操作,該序列的最後兩位是不會減小的。
因此可以證明,得到 \((c, d)\) 的對映只能透過減法操作。
補充 \((c, d)\) 的定義為 只進行一次 減法操作就能打破 \(k\) 的限制。
由於減法操作是唯一確定的,所以對映也是唯一確定的。
直接模擬減法是無法透過的,複雜度為 \(O(n)\)。
注意到該操作是輾轉相減狀物,直接用歐幾里得演算法最佳化即可。