|問題http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2000解法シミュレーション。方角+距離で移動していく系の問題はdx,dy(=-1,0,1のどれか)を方角によって決めて、それを距離分回す、という一般的なテクニック(?)を使うと便利だ。|問題http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1159町長を決めるためにn人(n≧3)でゲームをする。最初、ボウルにr個の石が入っている。以下のステップで進める。・ボウルに石が入っている場合、ボウルを持っている人はボウルから1つ石を取り出し手持ちにする。・そうでない場合、手持ちの石をすべてボウルに入れる・次の人にボウルを回す以下を繰り返し、一人の人が石を総取りすればゲーム終了である。総取りする人の番号を出力せよ。与えられる入力値の場合、ゲームは100万ステップ以内に保証される。解法100万ステップ以内に終わるのだからシミュレーションすればいい。英語の読解ができれば解けますね。解析的にも解けるような気がしますが・・・よくわかりません。|問題http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1129n枚のカードがある。花札シャッフルをr回行った後の一番上のカードの番号を求めよ。解法シミュレーションする。遅そうだけど、最大50枚のシャッフル回数50回なので十分間に合う。配列2つ用意しておくのが効率いい実装。(100pt)精進のため、1日1問AOJ-ICPCを解いてブログを書くようにします。|問題http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1147n個の点数が与えられる。Forest問題http://codeforces.com/contest/504/problem/A無向グラフがある。ループや多重辺はない。各頂点につながっている枝の数degree[k]と、つながっている先の頂点をxorした結果s[k]が与えられる。V_to)を出力せよ解法ループがないので、葉があることが保証される。degree[k]=1のものから処理していく。degree[k]=1の頂点は親ノードparent[k]=s[k]であることは自明。]も更新する(自ノードを切り離す)。これを逐次実行すれば解ける。degree[k]=1になったものをqueueに突っ込んで順番に処理すると実装が楽。n-1)の順列はn!パターンある。これを順番にソートして、k番目の順列をPerm(k)と定義する。Perm(y)を与える。順列Perm(x)からxを求める必要がある。これには、階乗進数への変換が便利である。1*1!という具合だ。上の例を見ると、A[2]はs[0]の値そのものであり、A[1]はs[1]がs[1..2]の中で何番目に大きいか、の値になっている。考えると、A[2]もs[0..2]の中で何番目に大きいか、の値だ。A[n-1]は容易に求まるが、A[n-2]以降は容易ではない。(n<=200,000なので、ナイーブな方法O(n^2)では計算が間に合わない)そこで、BITを使う。]=0に更新(BIT.add(s[i],-1))するとよい。n)に減るので間に合う。xからPerm(x)を生成する処理も必要だが、上記の逆をすればいい(多分)ので省略します。プログラミングとかしてます。Div.1とDiv.2の間をさまよってます。(Div.1)カウンター65462。