2010-06-01から1ヶ月間の記事一覧

TheMoviesLevelOneDivOne

日課消化。row,seatの数の大きさに始めは戸惑うが、すでに予約されたシートが1つ埋まることで、とりうるペアシートがいくつ減るかを考えれば、特に難しくない。 #include <algorithm> #include <iostream> #include <map> #include <numeric> #include <set> #include <sstream> #include <string> #include <vector> using na</vector></string></sstream></set></numeric></map></iostream></algorithm>…

NewCoins

日課消化。Div1の450。DPで解いたけど、メモ化再帰の方が計算時間は短いかも。 このコードだけ見ても、やってること分かりにくいかもです。 各整数の余りの処理をDPで最適化するアルゴリズムになっています。 #include <algorithm> #include <iostream> #include <map> #include <numeric> #incl</numeric></map></iostream></algorithm>…

TurretPlacement

日課消化。頭悪いコード。たぶん、点を20も30も用意されたらアウト。 丸め誤差が発生するので、点Mと点Nの距離を求めるのにdouble(つまりsqrt)は使えない。幸い各点は-10000〜10000の格子点座標上にしか発生しないから、距離はint形式でも二乗のまま…

SRM 473

登録時間に間に合いませんでした。 一応、div1の250だけ解いてみました。 #include <algorithm> #include <iostream> #include <map> #include <numeric> #include <set> #include <sstream> #include <string> #include <vector> using namespace std; #define FOR(i,s,e) for (int i = int(s); i != int(e); i++) #define FOR</vector></string></sstream></set></numeric></map></iostream></algorithm>…

KnightsTour

日課消化。始めから綺麗にコードが書けるようになりたい。 問題自体は難しくない。実装が面倒なだけ。 #include <algorithm> #include <iostream> #include <map> #include <numeric> #include <set> #include <sstream> #include <string> #include <vector> using namespace std; #define FOR(i,s,e) for (int i = int(s); i </vector></string></sstream></set></numeric></map></iostream></algorithm>…

TheTriangleBothDivs

日課消化。ちょっと手こずった。 2通りの解法があった時にどちらを選択すべきか、の判断がまだまだ甘い。 class TheTriangleBothDivs { private: bool check(string a, string b){ for(unsigned int i=0; i

expectedBounces

日課消化。いつもこういう綺麗な解法が見つかればいいんですけどね。 #include <algorithm> #include <iostream> #include <map> #include <numeric> #include <set> #include <sstream> #include <string> #include <vector> using namespace std; #define FOR(i,s,e) for (int i = int(s); i != int(e); i++) #define FORIT(i</vector></string></sstream></set></numeric></map></iostream></algorithm>…

Codeforces Beta Round #17

途中から初参加。 Noldbach problem 解もprimerじゃなきゃいけないって条件を見落としていて、何故ExampleBがNoになるのか終了ギリギリまで分からなかった。 英語読解の問題だなー。 #include <algorithm> #include <iostream> #include <map> #include <numeric> #include <set> #include <sstream> #include <string></string></sstream></set></numeric></map></iostream></algorithm>…

DigitMultiples

日課消化。部分文字列比較アルゴリズムの良い勉強になりました。 class DigitMultiples { private: struct node { int value; node *next; node(int value, node *next) : value(value), next(next) { } }; #define index_of(as, x) \ distance(as.begin(), …

SMS

日課消化。 かなり汚いコードだけど、課題に即しているって意味では分かりやすくなっているのかも。 unsigned intのまま、0より小さくなる場合とか扱えるようになるとよりいいんだけどねぇ…。上手い方法ないものか。 class SMS { private: bool checkvowel(c…

SRM472

250/500は簡単。 1000はランダムウォークの問題。メモリや計算時間を考慮すると、難解。というか解き方分からないよ…。 250/ColorfulTilesEasy 1列に赤・緑・青・緑のいずれかの色のついたタイルが並んでいる。 隣あったタイルが同じ色とならないようにする…