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

AOJ 0156 Moats around the Castle

問題 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0156。 解法 天守閣からBFS、複数続いている堀をその度にカウントしてWAを出していた。 コード nt dx[] = {0,-1,0,1}, dy[] = {-1,0,1,0}; int main(){ int n, m, i, j, d, res; while(scanf…

AOJ 1055 Spider Jin

問題 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0155。 解法 それぞれの距離をはかり、距離が50以下のものだけでグラフを作る。 あとはダイクストラで最短距離を求めて経路復元。 上限が1000なのでO(N2)で十分だと思う。 コード double cos…

AOJ 1044 Camel Case

問題 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1044。 解法 これもシュミレーション問題かな。たぶんそうだと思います。 与えられた文字列の記法が分かれば記法ごとに別の記法に変える。 最初は一緒くたに変換しようとしてWA出してた。 コ…

AOJ 0111 Doctor's Memorable Codes

問題 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0111。 解法 シュミレーション問題かな コード string encode(string code){ map<char, string> m; m['A'] = "00000"; m['B'] = "00001"; m['C'] = "00010"; m['D'] = "00011"; m['E'] = "00100"; m['F'] =</char,>…

AOJ 0111 Doctor's Memorable Codes

問題 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0111。 解法 シュミレーション問題かな コード string encode(string code){ map<char, string> m; m['A'] = "00000"; m['B'] = "00001"; m['C'] = "00010"; m['D'] = "00011"; m['E'] = "00100"; m['F'] =</char,>…

AOJ 1035 Sleeping Cats

問題 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1035。 日本語。 解法 以前、WA出したのは何故かな。 Wの大きさの配列用意して、それぞれどの猫が寝ているか見ていけばいい。 首輪でもつけるのかな コード int a[128], i, j, k; int main()…

AOJ 1008 What Color Is The Universe

問題 |A|と配列Aが与えられる。N[i]はAに含まれるiの数。 N[i] > |A| / 2 を満たす。iを探す。 解法 実装するだけ コード int A, N[1000001]; int main(){ int a, i; while(scanf("%d", &a) && a){ memset(N, 0, sizeof(N)); rep(i, a){ scanf("%d", &A); N[…

AOJ 1084 K Cards

問題 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1084。 日本語 解法 全探索で解けます。計算量はどれくらいなのかな。どうやって表記するのかよくわからない。 単純にループのとこだけでやるとO(n(n-1)/2(n-k))とか?こんな複雑な書き方な…

AOJ 1074 Popularity Estimation

問題 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1074. 日本語。 解法 i秒後に何人映っているかをメモしておけば簡単。やるだけ。 計算量は*O(nm)ぐらいでいいのかな。 コード int main(){ int n, m, d; char name[256]; while(scanf("%d", …

AOJ 2014 Surrounding Area

問題文 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2014 日本語。 解法 あるマスからDFSしていって黒に到達したら、1、白に到達したら2って感じにして行く。 dfsの再帰のところを最初+=にしようとしていた コード int f[50][50], c[50][50];…

AOJ 1144 Curling 2.0

問題 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1144&lang=jp 日本語。 解法 DFSで解く。四方向見て、進めるなら進む。盤面の外に行ったら次っていう感じでまわしてく。 コード int w, h; int board[20][20]; int dx[] = {0,-1,0,1}, dy[] …

AOJ 1144 Curling 2.0

問題 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1144&lang=jp 日本語。 解法 DFSで解く。四方向見て、進めるなら進む。盤面の外に行ったら次っていう感じでまわしてく。 コード int w, h; int board[20][20]; int dx[] = {0,-1,0,1}, dy[] …

AOJ 1045 Split Up!

問題 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1045 日本語。 解法 適当にDFSすればできる。 コード int n; int a[128]; int dfs(int p, int g, int c){ if(n == c) return abs(p-g); return min(dfs(p+a[c], g, c+1), dfs(p, g+a[c], c+1…

AOJ 2281 Swap Cipher

問題 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2281 日本語 解法 aとbを逆から読んで復号する。 コード int main(){ int N; while(scanf("%d", &N) && N){ char mes[128]; scanf("%s", mes); int a[128], b[128]; for(int i = N - 1; i >=…

AOJ 1110 Patience

問題文 5*4の20枚のカードがある(1~5)。あるカードと同じ数字の書いてあるカードが隣接(斜めでもよい)していれば、その二つのカードを取り出す。最適な取り出し方をした時、残るカードは何枚か 解法 幅優先探索で解く。状態をメモしておかないと状態数が爆発…

AOJ 1110 Patience

問題文 5*4の20枚のカードがある(1~5)。あるカードと同じ数字の書いてあるカードが隣接(斜めでもよい)していれば、その二つのカードを取り出す。最適な取り出し方をした時、残るカードは何枚か 解法 幅優先探索で解く。状態をメモしておかないと状態数が爆発…