2015-03-12から1日間の記事一覧

AOJ 1142 - Organize Your Train part II

C++さまさま.# 解法 全列挙する.std::set,std::reverseをつかうと楽. コード #include <iostream> #include <set> #include <algorithm> std::set<std::string> set; int main(){ int N; std::cin >> N; while(N--){ std::string S; std::cin >> S; set.clear(); int L = S.size(); for(int i=1;i</std::string></algorithm></set></iostream>

AOJ 1141 - Dirichlet's Theorem on Arithmetic Progressions

やるだけ. 解法 10^6以下の素数が高々80,000個なので,小さい方から順にa+nd(nは非負整数)の形で表されるかを調べていき,n個目を出力すればいい. コード #include <cstdio> #include <vector> bool isNotPrime[1000001]; std::vector<int> primes; int main(){ primes.push_bac</int></vector></cstdio>…

AOJ 1132 - Circle and Points

ちょっと悩んでしまった. 解法 半径1の円がある1点を含むためには,その円の中心がその1点を中心とする半径1の円内になければならない. よって,与えられた点を中心とする半径1の円をつくり,最も重なっているところの円の個数を求めればいい.*1 コード A…

AOJ 1138 - Traveling by Stagecoach

やるだけ. 解法 (どの都市にいるか, 馬券の使用状況)を頂点にしてDijkstra法をする. コード #include <cstdio> #include <vector> #include <queue> #define mp std::make_pair typedef std::pair<int,int> Pair; typedef std::pair<double,Pair> Q; const double INF = 1e20; int N, M, P, A, B; int T[</double,pair></int,int></queue></vector></cstdio>…

AOJ 1129 - Hanafuda Shuffle

やるだけ.# 解法 言われたとおりに書く.最初のカードの状態(下から1,2,...,N)に注意する. 1-indexedで書くと楽かも. コード #include <cstdio> #include <algorithm> int main(){ int N, R; while(scanf("%d %d", &N, &R), N || R){ int cards[51], _a[51]; for(int i=1;i<=</algorithm></cstdio>…

AOJ 0289 - Infinite Express

むひゃー. 解法 非負整数nの最右ビットをrms(n)で表す.ただし,rms(0) = 2^30とする. 例. rms(5) = 1 (5 = 0b101),rms(6) = 2 (6 = 0b110) (n>0ならば,このrms(n)はn & -nと書ける.BITでおなじみ.) 位置sにいるとき,i級快速(iは1rms(|s|)を満たす整…

AOJ 0288 - Knocker of the Gigas Cedar

RE.Ω\ζ°)チーン. 解法 経験値は100より多くあっても意味がないことに注意する. dp[i][j] := 樹の残りの耐久力がi,自分の経験値がjのときから何回で樹を倒せるか. これはO(DN)(定数に100がつく)で更新できる. コード #include <cstdio> #include <cstring> #include <algorithm> int D</algorithm></cstring></cstdio>…

AOJ 0287 - Jinkoki

多倍長書くだけ. 最初に 以下の文字列をコピペするといいかも.(問題文からコピペできるといいなあ) const std::string units[] = { "", "Man", "Oku", "Cho", "Kei", "Gai", "Jo", "Jou", "Ko", "Kan", "Sei", "Sai", "Gok", "Ggs", "Asg", "Nyt", "Fks", …

AOJ 0286 - Computation of Salary

やるだけやなあと思ったら,範囲外参照. 解法 記録の数が50,000件以下なので,記録についてループを書けばいい. コード S,T,Eのサイズを50,000にすると,範囲外参照でWAが生えます.ナニソレイミワカンナイ. #include <cstdio> #include <cstring> int main(){ int N, M; scanf("%d </cstring></cstdio>…

AOJ 0285 - Tennis

やるだけ. 解法 言われたとおりに書く.再帰で書くときはAを優先することに注意する. あとは慈愛で通りそう. コード #include <iostream> int J, Y; void rec(int j, int y, std::string s){ if(j == J && y == Y){ std::cout << s << std::endl; return; } if(j ==</iostream>…