GCJ

Google Code Jam 2009:Round2 Problem D. Watering Plants small

2つのスプリンクラーで円形のPlantに水をやる問題。 Large問題は検討もつかないけど、Smallなら簡単。n=1のときは、そのPlantの半径がそのまま答え。 n=2のtきは、2つのPlantを比べて大きいほうが答え。 n=3のときは、1つと2つのグループに分けて、それぞれ…

Google Code Jam 2009:Round2 Problem A. Crazy Rows

行列を隣り合った行の入れ替えによって下三角行列に変形する問題。以前他のところで見た気がする。何かの解説記事かな? 上から順番に見て、条件を満たしていない行があれば、条件を満たす一番近い行と置き換える。 これを全部の行に行えばおk #include <iostream> #i</iostream>…

Google Code Jam 2010:Round2 Problem C. Bacteria small

セル・オートマトンみたいな問題。Small程度のデータセットなら実行例のようにシミュレーション可能。 バクテリアの初期位置は100マス×100マスの範囲内。この範囲の外では、北と西に同時にバクテリアが存在することは無いから、この中だけでシュミレーション…

Google Code Jam 2010:Round2 Problem A. Elegant Diamond

ダイヤモンドを拡張して上下左右対称にする問題。 拡張する時、追加する文字によってコストが違う物だと思い込んでいた。大きさしか関係ないんだね。 一位とった人のソースコードを読んで気がついた。自分なりに書きなおしたのが以下のコード。 1行読み取り…

Google Code Jam 2010:Round 2 Problem B. World Cup 2010 large

この前のGCJ2010 Problem BをLarege問題用に書きなおし。 と、言っても、ほとんどContest Analysisの書き写しですが。前書いたプログラムは、実際の試合順にDPをやってけど、今回は後ろからメモ化再帰。 状態は試合番号とその後観る予定の試合数。計算量はO(…

Round 2 Problem B. World Cup 2010 small

Google Code Jam Round 1 は最高1008位でした。あーあRound2へは進めないな・・・と思ったら、おめでとうメールが。 確認するとちょうど1000位になってるよ!よくわからないけど、Round2に進めることになってしまったので、練習練習。 http://code.google.co…

Round 1B Problem A. File Fix-it

よく考えたらGCJってなんの言語使ってもいいんだよね。 これ、木構造扱わないといけないし、文字列処理が入ってくるので、Perlを使って書いてみた。 #!/usr/bin/perl $T = <>; for $no(1..$T) { $tree = {}; $line = <>; chomp $line; ($N, $M) = split / /,…