Codeforces Round #393 (Div.2) (8VC Venture Cup 2017 - Final Round Div.2 Edition)
はい。
http://codeforces.com/contest/760
A. Petr and a calendar
ざっくりと大意
・m月の1日がd番目の曜日の時にカレンダーは何段表記になるか。
Python3
m,d=map(int,input().split()) if m==2: ans=4+[0,1][d!=1] elif m in [4,6,9,11]: ans=5+[0,1][d>6] else: ans=5+[0,1][d>5] print(ans)
2月は1の曜日から以外が5段になる。30日までの月は7の曜日から以外が5段になる。31日までの月は6,7の曜日から以外が5段になる。リストを多次元にしてif分岐減らせるかもしれないけど何しているかわかりにくいし、分類通りにif分岐書いたほうが自然だろうと思う。
B. Frodo and pillows
ざっくりと大意
・n人のホビットがn個のベッドでm個の枕を使う。隣との枕の個数の差が2個以上になると喧嘩になる。
・喧嘩を発生させることなくFrodoはk番目のベッドでできるだけ沢山の枕を使いたい。
Python3
#あとで
editionalではFrodoが使える枕をx、Frodoの隣から端までのベッドの数をyとしている? y > x - 1 ならば (x - 1) * x / 2 + y (x - 1) 、違うなら (x - 1 + x - y) * y / 2で隣から端までの枕の必要個数が求まるらしい? ので mの最大値が109を2分探索していって枕が足りるxの最大値を探すらしい。