[Codeforces] 1031E Triple Flips
LINK:http://codeforces.com/contest/1072/problem/E
SOL:http://codeforces.com/contest/1072/submission/44821667
好毒的一題@@
照慣例看完還是沒想法,然後就去看解了。
題目要求O(n/3)之內完成,所以大約每3個就要用一次操作完成,但發現 ... 0 1 1無法辦到,所以就轉而考慮每6個用2次完成,接著暴力構一下就會發現在數列長度>=11時可以辦到。
這樣一來在 >=11 時都可以暴力弄好,那 <= 10 的時候嘞?
其實題目這裡給得比較鬆,有12次操作,我的作法是直接從後面掃,掃到1的話就將後3個反轉,最後會剩下前2個數字,然後暴力一下會發現1出現在最邊邊的時候數列長度>=7的話可以做好;1出現在第2個位置的時候數列長度>=8的話可以,這邊就判一下就OK了。
不過好像有個漏洞,會不會在長度<=7,亂掃後會在第2個位置剩下一個1的序列是否有其他掃法可以做好呢?不會的原因是因為我們暴力確認了只在第2個位置剩下一個1的時候是不可能達成的,如果有其他掃法的話就代表是有可能的,因為反轉是個步步可逆的操作。
為甚麼這題我覺得毒呢?因為一大堆暴力啊orz,看完官解後,我自己寫了一堆暴力,亂WA一片QQ
SOL:http://codeforces.com/contest/1072/submission/44821667
好毒的一題@@
照慣例看完還是沒想法,然後就去看解了。
題目要求O(n/3)之內完成,所以大約每3個就要用一次操作完成,但發現 ... 0 1 1無法辦到,所以就轉而考慮每6個用2次完成,接著暴力構一下就會發現在數列長度>=11時可以辦到。
這樣一來在 >=11 時都可以暴力弄好,那 <= 10 的時候嘞?
其實題目這裡給得比較鬆,有12次操作,我的作法是直接從後面掃,掃到1的話就將後3個反轉,最後會剩下前2個數字,然後暴力一下會發現1出現在最邊邊的時候數列長度>=7的話可以做好;1出現在第2個位置的時候數列長度>=8的話可以,這邊就判一下就OK了。
不過好像有個漏洞,會不會在長度<=7,亂掃後會在第2個位置剩下一個1的序列是否有其他掃法可以做好呢?不會的原因是因為我們暴力確認了只在第2個位置剩下一個1的時候是不可能達成的,如果有其他掃法的話就代表是有可能的,因為反轉是個步步可逆的操作。
為甚麼這題我覺得毒呢?因為一大堆暴力啊orz,看完官解後,我自己寫了一堆暴力,亂WA一片QQ
留言
張貼留言