Processing math: 0%

2020年3月6日金曜日

TopCoder Single Round Match 777

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

Div1 Easy PreviousOccurrence

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

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

 一応、ACしたコードを。


  1. class PreviousOccurrence():
  2. def findValue(self, defaultValue, query):
  3. if query==0:
  4. return 0
  5. if defaultValue==1:
  6. if query==1:
  7. return 1
  8. else:
  9. return -1
  10.  
  11. NOW=0
  12. LAST=[-1]*(5000000)
  13. ANS=0
  14.  
  15. while True:
  16. if LAST[NOW]==-1:
  17. NEXT=defaultValue
  18. LAST[NOW]=ANS
  19. ANS+=1
  20.  
  21. else:
  22. NEXT=ANS-LAST[NOW]
  23. LAST[NOW]=ANS
  24. ANS+=1
  25.  
  26. NOW=NEXT
  27.  
  28. if NOW==query:
  29. return ANS
  30. break

0 件のコメント:

コメントを投稿