2014-03-26から1日間の記事一覧

SRM604 Div2Easy - FoxAndWord

解法 二つの文字列を選んで、そのうち一つの区切る位置を決めて反転させる。これと他方の文字列が一致したらカウントする。 #include<bits/stdc++.h> using namespace std; // rep #define REP(i,a,b) for(int i=a;i<b;i++) #define rep(i,n) REP(i,0,n) class FoxAndWord { public: int howManyPairs(vector <string> words) { int result = 0; rep(i, words.size()-1) { REP</b;i++)></bits/stdc++.h>…

SRM603 Div2Med - SplitIntoPairs

解法 Xが負であることが保証されるので、正の数×負の数のペアでなければ必ず解に含まれる。また与えられた数列は必ず偶数個の要素であるので、正の数×負の数のペアが現れる場合は、正の数と負の数がそれぞれ奇数個の場合で、この一個だけが解に関わる。解く…

AOJ0181 Persistence

AOJ

解法 本が全て「入りきる」または「入りきらない」を評価の条件として、本棚の幅を二分探索により求める。本棚の幅が正の整数の増加列の中の値であることから、この数列のうちで解を仮定して二分探索をすることができる。二分探索の基本問題。 #include <bits/stdc++.h> usi</bits/stdc++.h>…

AOJ0162 Hamming Numbers

AOJ

解法 先にハミング数を全列挙してクエリに答える。 2と3と5の数を決めうちして列挙する。重複を許さないように、得られた値は set に詰める。 2^20 が100万を超えるので、2, 3, 4 は 20 個まで選択すれば十分。 #include <bits/stdc++.h> using namespace std; set<int> hamming;</int></bits/stdc++.h>…

AOJ0150 Twin Prime

AOJ

解法 メモ化した愚直な素数判定。エラトステネスの篩でも良い。反省 はじめnの制約を見てなかったので愚直のisPrimeでTLEだったが、実行時間は4秒ほどだった。これならメモ化で十分かとなり、コードを書き直す必要はなかった。 #include<bits/stdc++.h> using namespace std</bits/stdc++.h>…

AOJ0126 Puzzle

AOJ

解法 やるだけシミュレーション。注意すべきところは思いつかない。反省 はじめused配列をboolで宣言してたにも関わらずintとして利用してた。 それを直してサンプル通って提出したらWAでおかしいと思ったら3x3の中で数にダブりがないかチェックする作業忘れ…

SRM427 Div2Easy LoveCalculator

問題概要 'L','O','V','E'の頻度を調べて、与えられた式によって得点を最大化せよ。解法 概要の通りの実装。 class LoveCalculator { public: int calc(int l, int o, int v, int e) { return ((l+o)*(l+v)*(l+e)*(o+v)*(o+e)*(v+e))%100; } string findBoy(…

SRM427 Div2Med DesignCalendar

以下のコードで通る問題。 class DesignCalendar { public: int gcd(int a, int b) { if(b==0) return a; return gcd(b, a%b); } int shortestPeriod(int d, int y) { return d/gcd(d, y); } };