Transformation HDU - 6726(百度之星复赛2019 dfs)
生活随笔
收集整理的這篇文章主要介紹了
Transformation HDU - 6726(百度之星复赛2019 dfs)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給你一個二元組(a,b)(a,b),支持AB兩種操作,分別是將其變成(a,2b?a)(a,2b?a)和(2a?b,b)(2a?b,b)。問能否通過大于等于零次操作將其變成(c,d)。
Input
第一行一個正整數T(T≤8×104)表示數據組數。
接下來TT行,每行44個整數a,b,c,d(?1018≤a,b,c,d≤1018)。
Output
對于每組數據,如果有解,首先輸出一行Yes,然后輸出一行由ABAB構成的字符串,表示一系列操作。如果有多解,輸出長度最短的解,如果有多個長度最短的解,輸出字典序最小的。如果無解,輸出No。
Sample Input
3
0 1 2 3
0 1 0 1
0 1 -1 3
Sample Output
No
Yes
Yes
BA
挺巧妙的一種方法,一開始順著來bfs結果超內存了。
如果逆著來算的話,(a,2*b-a)->(x,y)->(x,(x+y)/2),那么(x+y)一定是偶數,并且x和y是不斷收斂的。那么max(x,y)>max(a,b),min(x,y)<min(a,b)。這樣去剪枝,就能過了。不過時間復雜度還是很大。
代碼如下:
努力加油a啊,(o)/~
總結
以上是生活随笔為你收集整理的Transformation HDU - 6726(百度之星复赛2019 dfs)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Diversity HDU - 6725
- 下一篇: XKC's basketball tea