2010-05-22から1日間の記事一覧

PKU 2267 From Dusk till Dawn or: Vladimir the Vampire

ダイクストラ法 時刻の概念があるのでノードに時刻を持たせる必要がある 実はUVA時代に生まれて初めて解けたダイクストラ法の問題だったりする struct Dic { map<string, int> m; int get(const string& s) { if (!m.count(s)) { const int index = m.size(); m[s] = inde</string,>…

PKU 1617 Crypto Columns

ソート 残りは書いてある通りに実装 int main() { string key; while (getline(cin, key) && key != "THEEND") { vector<pair<char, int> > p; for (int i = 0; i < key.size(); ++i) { p.push_back(make_pair(key[i], i)); } stable_sort(p.begin(), p.end()); string body;</pair<char,>…

PKU 1404 I-Keyboard

動的計画法 縦に何番目のキー、横に何番目の文字を取る 更新の条件式を工夫することで最後のキーに多く割り当てることが出来る ただし以下の解答は本当に条件を満たすかどうか未確認 static int dp[128][128]; static int previous[128][128]; int main() { …

PKU 1256 Anagram

比較関数を変えてnext_permutation()を呼び出す 比較関数を関数オブジェクト等にすればもっと綺麗だった int main() { int letterToIndex[0x100]; char indexToLetter[0x100]; for (char c = 'A'; c <= 'Z'; ++c) { letterToIndex[c] = (c - 'A') * 2; index…