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

AOJ 0209 - Scene in a Picture

aoj

12月にWA出して,1月にまたWA出して,ようやくACしました. きれいに書けたよー #include<iostream> //Memo: 90*n度回転で決まっても90*(n+1)度回転で最小になるかも //Memo: 最後まで //Memo: 配列の範囲 //Memo: 最上,左の条件 const int MAX_N = 100, MAX_M = 50, I</iostream>…

Atcoder Regular Contest #011 with Haskell

久しぶりにHaskellをつかいました. やっぱりつかわないとできないですね.Haskell書かないとです. A C++で書いたコードを流用した.Functor, Applicative Functor, Monadどれも忘れてしまいました. import Control.Applicative -- 順にn, m, N(iで代用), …

Atcoder Regular Contest #011

せっかくGoogle Calendarに登録しておいたのに忘れてました. 今日90分で解いてみたら-oo-でした.私から見た難易度はA>B=Cでした. A あわあわ(解けない) あわあわ(解けた).A問題にしては難易度が高いなーと思った. #include<iostream> int n, m; int recycle(int N</iostream>…

AOJ 0213 - Subdivide The Land

aoj

購入者nを入れる場所を考えるんじゃなくて,(x, y)にどの購入者を入れるか. つまり,逆に考えるといい.ぴっちり入るという事は(0, 0)から(w-1, h-1)まで入れられれば成功ということ. 重複で入ったものは自然に消えるだろうとか思っちゃいけない(推測).で…

AOJ 0212 - Highway Express Bus

aoj

二つの状態で管理するdijkstra法. 何枚使ったかとどこにいるかを保持しておく. #include<iostream> #include<algorithm> const int INF = 1 << 24; int ticket, V, E, start, goal; //d[i][j]: i枚使ったんだよー int d[11][101], used[11][101], cost[101][101]; int dijkstra(</algorithm></iostream>…

AOJ 0191 - Baby Tree + 戯言

aoj

四捨五入がだめだったっぽい.ただprintf("%.2f", hoge)でいい.*1 DPが少しずつできるようになってきた.全探索を思い浮かべるといいかんじ. はじめに肥料を肥料0として,次に肥料nをあげたときの倍率を1とすると,処理がちょっとだけ楽になるよー. 10^6…

AOJ 0203 - A New Plan of Aizu Ski Report

aoj

memo[y][x]: 座標(y, x)からはじめたときに滑れるパターンの総数 (座標は(0, 0)を始点とする)w*hのコースでの滑り終わりは(x, h-1)(1)の!(map[y+1][x+i] == 2 && i != 0)は A: 元のx座標と次に行くx座標が同じ B: 次のところにはジャンプ台があるとして, カ…

AOJ 0201 - Wrought Gold Master

aoj

stringとか絡むとうまく書けないの何とかしたい. あるアイテムのレシピは1種類しかないが,その材料にもレシピがあるので,依存関係が面倒. 全部の値段を強引に更新するときは最大でも10^6なのでこれで十分. #include<iostream> #include<map> struct Recipe{ int index,</map></iostream>…

AOJ 0215 - Pachimon Creature

aoj

bitDPかな(違う) あれ出力とちがうかも(違わない) あ,通ったを属性がiのパチモンがいる場所の集合とする. (ただし,始点,終点をそれぞれとしパチモンと見る.) お供のパチモンの属性を選ぶ(とする) はを捕まえられる属性,はを...とする. の最短路を求め…

AOJ 0244 - Hot Spring Trip

aoj

時間はかかったけど自分で解けた.嬉しい. dijkstra法っぽい気がしたけど,違う気もする. #include<iostream> #include<vector> struct Edge{ int to, cost; }; const int INF = 1 << 24; int n, m; int d[2][100]; std::vector<Edge> es[100]; void dijkstra(int s){ int used[2][</edge></vector></iostream>…

AOJ 0146 - Lupin The 4th

aoj

nが100ぐらいまでいくかなー(MLE) nextは行った集合だけを添え字にすればいいよなー(TLE(推測)) orz #include<iostream> #include<algorithm> #include<vector> const int MAX_N = 15, INF = 1 << 24; const double EPS = 1e-10; int ns[16], d[16], cost[16][16], w[16], weight[1<</vector></algorithm></iostream>

AOJ 0154 - Sum of Cards

aoj

dpじゃなくてメモ化ですね. #include<iostream> #include<algorithm> int a[7], b[7], m, dp[7001][7]; //次i int rec(int n, int i){ if(n >= 0 && i < m && dp[n][i] != -1){ return dp[n][i]; } if(n == 0){ return 1; } if(n < 0 || i >= m){ return 0; } int res = 0; for(i</algorithm></iostream>…

AOJ 0240 - Interest Rates

aoj

解くだけ #include<iostream> double simulate(int year, int rate, int type){ if(type == 1){//単利 return 1 + 1.0 * year * rate / 100; }else{//複利 double res = 1; for(int i=year;i--;){ res *= (1 + 1.0 * rate / 100); } return res; } } int main(){ int n</iostream>…

AOJ 0202 - At Boss's Expense

aoj

1s超えるかなーとかかんがえてたけど超えませんでした. O(xn)のはず.dpで解く. #include<iostream> bool prime[1000001], dp[1000001]; int main(){ for(int i=0;i<=1000000;i++){ prime[i] = true; } prime[0] = prime[1] = 0; for(int i=2;i<=1000000;i++){ if(pr</iostream>…

AOJ 0221 - FizzBuzz

aoj

m>=2なので1人でやることはないんだとそっと胸をなでおろした. #include<iostream> #include<vector> #include<sstream> int toInt(std::string s){ std::stringstream ss(s); int i; ss >> i; return i; } bool isTrue(int n, std::string s){ std::string _s; if(n % 3 == 0)_s += "F</sstream></vector></iostream>…

AOJ 0571 - JJOOII

aoj

#include<iostream> #include<vector> struct JOI{//cがn個ある char c; int n; }; std::vector<JOI> jv; std::string str; void kako(){ char c = str[0]; int n = 1; int str_length = str.size(); for(int i=1;i</joi></vector></iostream>

AOJ 0239 - Calorie Counting

aoj

書くだけ #include<iostream> #include<vector> struct Sweets{ int i, p, q, r; }; int main(){ int n; while(std::cin >> n, n){ std::vector<Sweets> v; for(;n--;){ Sweets s; std::cin >> s.i >> s.p >> s.q >> s.r; v.push_back(s); } int P, Q, R, C; std::cin >> P >> Q >> R ></sweets></vector></iostream>…

AOJ 0241 - Quaternion Multiplication

aoj

AOJ 0204は先人さんのコードの出力と比較して1つだけ違ってた. そのひとつがなぜ起きたのか解明中. #include<iostream> int main(){ int n; while(std::cin >> n, n){ while(n--){ int x1, y1, z1, w1, x2, y2, z2, w2; std::cin >> x1 >> y1 >> z1 >> w1 >> x2 >> y</iostream>…

AOJ 0204 - UFO Shooting Down Operation

aoj

わーとおったよー.*1 結局最後は線分と点の計算が間違っていたみたい. すべて参考にした方のおかげといってもいいです.ありがとうございます. 参考: AOJ : 0204 - UFO撃墜作戦 (UFO Shooting Down Operation) - Respect2Dの日記, Public Solutionsにあっ…

AOJ 0238 - Time to Study

aoj

AOJ 0204が通らないー #include<iostream> #include<cstdio> int main(){ int t, n; while(std::cin >> t >> n, !std::cin.eof()){ int sum = 0; while(n--){ int s, f; std::cin >> s >> f; sum += f - s; } if(sum >= t){ puts("OK"); }else{ printf("%d\n", t-sum); } } }</cstdio></iostream>

AOJ 1005 - Advanced Algorithm Class

aoj

the elements of the matrix may not be necessarily distinct(要素が必ずしも異ならない)と書いてあったので, 高さが最も(小さい/大きい)人が2人以上いるかもと考えた(杞憂?) また,studentなので1人に定まるんだろうなとか考えてた. #include<iostream> #include<vector> </vector></iostream>…

AOJ 1004 - Pair of Primes

aoj

#include<iostream> int main(){ const int MAX_N = 10000; bool is_prime[MAX_N+1]; for(int i=0;i<=MAX_N;i++){ is_prime[i] = 1; } is_prime[0] = is_prime[1] = 0; for(int i=2;i<=MAX_N;i++){ if(is_prime[i]){ for(int j=i*2;j<=MAX_N;j+=i){ is_prime[j] = 0; }</iostream>…

AOJ 0070 - Combination of Number Sequences

aoj

a[1Errorでした.a[1 1 容量は少し余分にとっておくべきですね.(MLEしたら残念) #include<iostream> int n, s; int a[1<<11][340]; //S: つかったもの //v: さっきつかったもの //rn: 入れた数 //sum: 残る和 int rec(int S, int rn, int sum){ if(sum >= 0 && a[S][s</iostream>…

AOJ 0566 - Soccer

aoj

#include<iostream> #include<algorithm> struct team{ int index, points, rank; }; bool descending_team_with_point(const team& l_team, const team& r_team){ return l_team.points > r_team.points; } bool ascending_team_with_index(const team& l_team, const team& r_te</algorithm></iostream>…

AOJ 0555 - Ring

aoj

これも解いてました.findするだけ. #include<iostream> #include<string> int main(){ std::string find_str, target_str; std::cin >> find_str; int n, len, t = 0; std::cin >> n; for(;n--;){ std::cin >> target_str; len = target_str.length(); target_str += target_</string></iostream>…

AOJ 0554 - Total Time

aoj

楽な問題を消化してっと. 解いていて変更もなかったので,そのままコピーペースト. #include<iostream> int main(){ int s = 0, t; for(int i=0;i<4;i++){ std::cin >> t; s += t; } std::cout << (s/60) << "\n" << (s%60) << "\n"; }</iostream>

AOJ 0515 - School Road

aoj

左端と上端の計算を間違えてた. 太郎くんの周りが工事中とか考えてた.(0通り) #include<iostream> int main(){ int dp[20][20], map[20][20]; int w, h; while(std::cin >> w >> h, w){ for(int i=0;i<16;i++){ for(int j=0;j<16;j++){ dp[i][j] = 0; map[i][j] = 0;</iostream>…