2020年3月6日金曜日

TopCoder Single Round Match 777

 一完できたのでレートは上がりましたが、あまり腑に落ちない問題でした。

Div1 Easy PreviousOccurrence

 愚直に探索するだけ。
 ただ、defaultValue = 1 のときは、0, 1, 1, 1,...となり、2以上の数にならないので気を付ける。

 良い方法が思いつかずとりあえず書いてみた後、適当な数で探索してみたところ、Pythonでも間に合いそうだったので提出したらACでした。
 本当は全探索すべきなんだけど、Pythonではかなり時間がかかりそうだったので適当に切り上げました。

 一応、ACしたコードを。


class PreviousOccurrence():
    def findValue(self, defaultValue, query):
        if query==0:
            return 0
        if defaultValue==1:
            if query==1:
                return 1
            else:
                return -1

        NOW=0
        LAST=[-1]*(5000000)
        ANS=0

        while True:
            if LAST[NOW]==-1:
                NEXT=defaultValue
                LAST[NOW]=ANS
                ANS+=1

            else:
                NEXT=ANS-LAST[NOW]
                LAST[NOW]=ANS
                ANS+=1

            NOW=NEXT

            if NOW==query:
                return ANS
                break

0 件のコメント:

コメントを投稿