2011-01-01から1年間の記事一覧

AOJ - Problem 0168 : Kannondou

問題文 DPで解けます。i段目の上がり方がA[i]通りあるとすると i段目に来るためには1つ下の段か、2つ下の段か、3つ下の段から来るはずなので A[i]はA[i-1]+A[i-2]+A[i-3]で求まります。解は(A[n]/365/10)+1を出力します。 #include <iostream> using namespace std; in</iostream>…

Google Code Jam Japan 2011 予選

Google Code Jam Japan 2011 結果A small,B Small,C Small,C Largeの4つでスコア28点で順位は343位でした。 Smallが5点でLargeが13点です。 Rank Score Time A Small A Large B Small B Large C Small C Large 343 28 2:48:25 40:52 --- 2:48:25 --- 1:15:45…

KUPC 2011(京都大学プログラミングコンテスト) 参加記

KUPC 2011 KUPC参加記です。KUPCは京都大学写真部とは関係ないようです。結果A,B,C,Dの4問Acceptで、最終順位は48位でした。 私にとって慣れない問題の形式もありましたが、あまりよく考えずにコードを書くのはよくないと思いました。 printf/scanf を使用す…

UAPC 2011(会津大学プログラミングコンテスト) 参加記

UAPC 2011 結果A,B,Kの3問Acceptで、最終順位は46位でした。自分が思ったほどひどい結果にはなりませんでしたが、もう少し上位に入りたかったです。 解答と解説はAcceptした問題だけ書いています。 Rank AC Time A B C D E F G H I K L 46 3 463 25/0 265/2 …

AOJ - Problem 0036 : A Figure on Surface

AOJ

問題文 図形はひとつなので普通に実装しただけです。 #include <iostream> #include <cstdio> using namespace std; int main(){ int ax, ay; char f[12][12]; bool flag = false; for(int y=0 ; y<12 ; y++){ for(int x=0 ; x<12 ; x++){ f[y][x] = 0; } } while( 1 ){ for(in</cstdio></iostream>…

AOJ - Problem 0035 : Is it Convex?

問題文 線分ACと直線BD,あるいは直線ACと線分BDのどちらかが交差していない場合は、 凹みのある四角形です。 線分や縁の交差判定はよく使うので慣れておきたいものです。 #include <complex> #include <cstdio> #include <cmath> using namespace std; // 点座標を型とする typedef </cmath></cstdio></complex>…

AOJ - Problem 0034 : Railway Lines

AOJ

問題文 2つの列車がすれ違う区間を出力する問題です。 同時に2つの列車が出るので、どちらの列車も出発してからすれ違うまでの時間は同じはずです。 また速度が与えられているのでどこですれ違うかわかるはずです。 ただし、ちょうど駅のところですれ違う…

AOJ - Problem 0033 : Ball

AOJ

問題文 適当に試行錯誤してAcceptしました。無駄な処理を含んでいる気がします。 #include <iostream> #include <stack> #include <vector> using namespace std; int main(){ int n, a; vector<int> A; cin >> n; for(int i=0 ; i<n ; i++){ A.clear(); for(int j=0 ; j<10 ; j++){ cin >> a; A.push_back(a); } stack<int> B, C; bool flag = true; B.</int></n></int></vector></stack></iostream>…

AOJ - Problem 0032 : Plastic Board

AOJ

問題文 AOJ - Problem 0003 : Is it a Right Triangle? と同じような問題です。 ピタゴラスの定理を使うだけの簡単な問題です。 #include <cstdio> using namespace std; int main(){ int a, b, c, ans1=0, ans2=0; while( scanf("%d,%d,%d", &a,&b,&c) != EOF ){ if</cstdio>…

AOJ - Problem 0031 : Weight

AOJ

問題文 入力aに対し、aを超えない最大の2nをaから引いていくとうまくいくと思います。 #include <iostream> #include <vector> using namespace std; int main(){ int w, g[10]; vector<int> ans; for(int i=0,j=1 ; j<=512 ; j*=2, i++){ g[i] = j; } while( cin >> w ){ ans.clear</int></vector></iostream>…

AOJ - Problem 0030 : Sum of Integers

問題文 0 から 9 の数字から異なる n 個の数を取り出して合計が s となる組み合わせの数を出力する問題です。 0 から 9 の数字から異なる n 個の数を取り出す組み合わせもれなく列挙するといいと思います。「C言語による最新アルゴリズム辞典」を参考にして…

AOJ - Problem 0029 : English Sentence

AOJ

問題文 AOJ - Problem 0028 : の単語バージョンです。出現回数の最も多い単語を出力します。 C++ならを使って、単語と出現回数をペアで保持すると楽だと思いました。 #include <iostream> #include <string> #include <map> #include <vector> using namespace std; int main(){ map<string, int> word; v</string,></vector></map></string></iostream>…