はまやんはまやんはまやん

hamayanhamayan's blog

RUPC 2017 day2 解説

http://judge.u-aizu.ac.jp/onlinejudge/contest_problem.jsp?id=RitsCamp17Day2

本物の解説はこの方のSlideShareにあります。
https://www.slideshare.net/yoshidakuroura/presentations

以下、解説























A. The Mean of Angles

http://judge.u-aizu.ac.jp/onlinejudge/creview.jsp?rid=2235761&cid=RitsCamp17Day2
基本はr1とr2の平均を取れば良いのだが、r1とr2の角度の差が180度を越える場合は反対側の角度になるため、+180をする。あとは[0,360]に丸めればOK

B. GPA JANKEN

http://judge.u-aizu.ac.jp/onlinejudge/creview.jsp?rid=2235810&cid=RitsCamp17Day2
答える順番を整えるために、
m[x] := A[i] == xとなるiの集合
を作っておく。
作ったらソートして、あとは各A[i]の値について、二分探索で負け数を数えて、引き分けは同数の数-1で、あとは全体(N-1)から負けと引き分けを引くと勝ちになる。
スコアを出してm[x]の全てのiに答えを入れる。

C. Factorization

http://judge.u-aizu.ac.jp/onlinejudge/creview.jsp?rid=2235822&cid=RitsCamp17Day2
まず構文解析力が求められる。
perse関数では構文解析をして配列F = {(係数,xの次数)}を作成している。

あとは、剰余の定理を使って因数分解の(x+?)の?の部分を特定していく。
?の候補は[-2000,2000]なので愚直に配列Fを使いながら計算して、=0となるものが答え(chk関数)。
それを式におこすと答えになる。