2011-04-01から1ヶ月間の記事一覧

POJ-2106: Boolean Expressions

PKU

keyword 構文解析 C++ 問題概要 論理式を構文解析した結果を出力する問題。 解法 やるだけ。BNFは、 expr := term ( '|' term )^* term := fact ( '&' fact )^* fact := 'V' | 'F' | '(' expr ')' | '!' fact

Marathon Match 68の反省

今回のマラソンは、自分で思っていた以上に駄目だった。高い授業料(=rating)を払ったので、しっかりと反省することにする。 過去の教訓 マラソンマッチに参加するのは今回が4回目だけど、過去3回の反省は生かせたのか。 初参加だったMM64は、環境を整備する…

POJ-3536: Beer Refrigerator

PKU

keyword BruteForce C++ 問題概要 N( 解法 3辺をa,b,cと置く。a 相加相乗平均を使うと3つの和の任意の2つの差の平方の和が最小になるようにとか、そういう数学的な解法もあるかもしれないけど、間に合うならばBruteForce(というか、一番分かりやすい書き…

7日目

今まで見て見ぬふりをしていたけど、あんな量(60kB)のソースコードにバグが埋まってないはずがない。 今回の問題って、1問でも落としたら即終了な気がするんですが。 一応、それを気遣って時間の制限はかなり余裕を持たせているけど。 でも今更ソースコード…

6日目

朝起きたら順位が下がっていた。 というか、何だかんだで赤コーダーとか自分よりレーティング高い人もそれなりの数いる。 とりあえず、文字を規則的に置いていくパターンにあったバグを修正する。 文字の統計情報も生かすようにしてみた。 具体的には、出現…

5日目

手元でテストケースを100個回してみた。 交わり率重視のパターンが5つ位最大値を出していた。 予想よりちょっと多い。ここを修正しよう。 探索範囲を広げたりして、交わり率がコンスタントに5割をこえるようにした。 思った以上にスコアにも響いた。 とは…

4日目

メモリ周りのバグにぶつかって、それを取り除くだけで1日が終わろうとしている。 途中でJavaに切り替えようとしたけど、vectorの便利さから離れられず結局C++に戻った。 結局、メモリ周りのバグが取りきれなかったのでデータ構造を単純にして解決したことに…

3日目

朝起きたとき、データ構造はTrieで持つよりもvector<int> table[n][n文字がchのストリングの番号]で管理してintersectionとか使った方がいい気がしてきた。 文字列に出現率の高い文字の重み付き平均でスコアリングして置くと役に立つかな? eが多い文字は高スコア</int>…

2日目

とりあえず規則的に埋めるやつで、対称性と使用率を完璧にして、充填率も上げておこう。 適当に書いたのを出したら59.4。 期待値は(0.4+1.0+1.0+0.0)/4*100=60位だと思えば思えば妥当な結果。充填率は頑張ればもう少し上げられうだろうか。 ここにどうやって…

1日目

えっ、マラソン開催されてたの?という状況からのスタート。 スタートダッシュの遅れは気にせず、まずは問題文を読んでみる。 ふむふむ、クロスワードか。Trie作って文字列管理したら何とかできそうな気がする。 各評価関数に重みが付くのか。こういう、重み…

Marathon Match 68: BeautifulCrossword

大雑把な感想 symmetryが重かった。重すぎた。でも上位を目指すには真面目にクロスワードもやらないといけない。 力の入れ所を正確に把握しないとスコアに反映されないという、好きな(not 得意な)タイプの問題だった。 無策っぷりが響いて、結果は良くなかっ…