8VC Venture Cup 2016 - Final Round (Div.2 Edition)
はい。
http://codeforces.com/contest/635
A. Orchestra
ざっくりと大意
・オーケストラの人たちはr * cで配置されてn人のビオラ以外は全員バイオリンである。
・ポールはビオラが好きなので撮影する時にビオラが少なくともk含むようにしたい。
・何言ってるのか分からないし、サンプルからもエスパーできない。
B. Island Puzzle
ざっくりと大意
・1からnまでナンバリングされたn個の島がある。1と2、2と3...、nと1の島はつながっている。
・島にはそれぞれ台座の上に一意の色の彫像がある。だが1つだけ台座しかない島がある。
・数列aの\(a_i\)が0の島には彫像がない。隣接する島から彫像を移動させることで数列bの配置にしたい。
・サンプル1は1,0,2 -> 0,1,2 -> 2,1,0 -> 2,0,1で数列aの配置が数列bの配置になる。
Python2
n=int(raw_input()) a=map(str,raw_input().split()) b=map(str,raw_input().split()) a.remove('0') b.remove('0') chk=b.index(a[0]) c=b[chk:]+b[:chk] print 'YES' if a==c else 'NO'
0と入れ替えでしか移動がないので、0以外の数の位置関係?は変わることがない。輪でループするために何処かの島を始点にして数列で表しているが、図を書き起こして0,1,2,3,...を輪で配置して0と入れ替えをシミュすると位置関係が変わらないことがわかると思う。
なので何か同じ数を始点にして同じ並びになるか?とか、数列aの末尾にaを付け足し(輪の2周目のようなもの)てその中に数列bが現れるか?などの探し方があると思う。