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

AOJ 0544 - Sugoroku

aoj

AtCoderが久しぶりに開かれるそうで,嬉しい限りです. #include<iostream> int main(){ int n, m, mass[1001], action[1001]; while(std::cin >> n >> m, n){ for(int i=1;i<=n;i++){ std::cin >> mass[i]; } for(int i=1;i<=m;i++){ std::cin >> action[i]; } int po</iostream>…

AOJ 0534 - Chain

aoj

JOI予選の3問目は実装するだけだからとか高をくくった結果,2時間30分かかりました.残念. 1ヶ月ぶりだとしても,これはひどいので,お座なりな考える手順を変えることにします.ちなみにChainberはChamberです. #include<iostream> #include<vector> struct Chainber{ int c</vector></iostream>…

AOJ 0520 - Lightest Mobile

aoj

再帰的に紐がつり合う最小の重さを求めていけばいいです. 考えはすぐ(2日目)浮かんだけど凡ミス. 今後,スコープとあとでつかう変数の値を変えていないか確認します. #include<iostream> int gcd(int a, int b){ if(b == 0)return a; return gcd(b, a%b); } struct </iostream>…

AOJ 0568 - Pasta

aoj

典型的なDP問題.O(n)だと思います. #include<iostream> const int MAX_N = 100; //memo[i][j][k]: i日目jをk+1日続けた総数 int memo[MAX_N+1][3][2], plan[MAX_N+1]; void pass(int day, int source){ if(source != -1){ memo[day][source][1] = memo[day-1][source</iostream>…

ARC 001 A問題 (with JavaScript(Node.js))

ほんのちょっとNode.js触れたので,いつもどおりA問題だけ解いた. var fs = require('fs'); var input = fs.readFileSync('/dev/stdin', 'utf-8'), res = [0, 0, 0, 0, 0], res_max, res_min; input = input.split('\n'); var N = parseInt(input[0]); for(…

AOJ 0503 - Cup

aoj

カップたちの状態をトレース(辿っていく)するだけでも時間に間に合う. 最初,出会った状態に印をつけてましたが,MLE.(じゃなくてもTLE) そういえば,前回移動したものを戻しちゃ意味ないよなあ.これで状態に重複なくなると思いました. そしたら,うまく…

AOJ 0589 - Production

aoj

冗長. #include<iostream> #include<vector> #include<algorithm> struct Product{ std::string name; int amount; }; int main(){ std::vector<Product> v; int n; std::cin >> n; for(int i=0;i<n;i++){ std::string name; int amount; std::cin >> name >> amount; auto it = std::find_if(v.begin(), v.end(), [&name](Pr…</n;i++){></product></algorithm></vector></iostream>

AOJ 0058 - Simple Calculator

aoj

かんたんなもんだいばかりといとるなー #include<iostream> int main(){ int res; std::cin >> res; char o; while(std::cin >> o, o != '='){ int n; std::cin >> n; if(o == '+')res += n; else if(o == '-')res -= n; else if(o == '*')res *= n; else if(o == '/')</iostream>…

AOJ 2197 - Sum of Consecutive Integers

aoj

求める数をn, 連続する整数の最小値をm, 連続する個数をkとすると,が成り立つはずです. あとはmが整数となるか調べるだけです. #include<iostream> int main(){ int n; while(std::cin >> n, n){ int res = 0; for(int k=2;k<50;k++){ int child = 2*n - k*k + k; i</iostream>…

AOJ 2018 - Princess's Gamble

aoj

部屋の壁を壊した姫様の力がすごいのか,単に壁が脆いのか. #include<iostream> int main(){ int n, m, p; while(std::cin >> n >> m >> p, n){ int mn, s = 0; for(int i=1;i<=n;i++){ int j; std::cin >> j; if(i == m)mn = j; s += j; } if(mn == 0)std::cout << 0 </iostream>…

AOJ 0256 - Points for a Perfect Scorer

aoj

#include<iostream> int main(){ int i, s = 0; for(int j=0;j<10;j++){ std::cin >> i; s += i; } std::cout << s << std::endl; }</iostream>

AOJ 2272 - Cicada

aoj

5分かかった.北,西に移動しないので{ある地点までの最小の虫} = min({その西までの最小の虫}, {その北までの最小の虫}) + {その地点にいる虫の数}で求まります. あとは再帰的に計算するだけです. #include<iostream> int memo[50][50]; int main(){ int H, W, map[</iostream>…

AOJ 1135 - Ohgas' Fortune

aoj

10分かかった.単利・複利は苦手です. #include<iostream> int first, year, n, type, every; double rate; int calculate(){ int a = first, b = 0; if(type == 0){ for(int i=0;i<year;i++){ b += a * rate; a -= every; } return a + b; } for(int i=0;i<year;i++){ a += a * rate - every; } return a; } int main(){ int m; std::cin >…</year;i++){></iostream>

AOJ 1153 - Equal Total Score

aoj

7分かかりました. #include<iostream> #include<vector> #include<algorithm> int main(){ int n, m; while(std::cin >> n >> m, n){ int s1 = 0, s2 = 0; std::vector<int> v1, v2; for(int i=0;i<n;i++){ int j; std::cin >> j; v1.push_back(j); s1 += j; } for(int i=0;i<m;i++){ int j; std::cin >> j; v2.push_back(j); s2 +…</m;i++){></n;i++){></int></algorithm></vector></iostream>

AOJ 1147 - ICPC Score Totalizer Software

aoj

4分かかりました. #include<iostream> #include<vector> #include<algorithm> int main(){ int n; while(std::cin >> n, n){ std::vector<int> v; for(int i=0;i<n;i++){ int j; std::cin >> j; v.push_back(j); } std::sort(v.begin(), v.end()); int ave = 0; for(int i=1;i</n;i++){></int></algorithm></vector></iostream>

AOJ 0516 - Maximum Sum

aoj

#include<iostream> const int MAX_N = 1 << 18, INF = 1 << 24; class SegmentTree{ public: SegmentTree(int _n){ n = 1; while(n < _n)n *= 2; for(int i=0;i<2*n-1;i++){ data[i] = 0; } } void add(int k, int a){ k += n - 1; data[k] = a; while(k > 0){ k = (k</iostream>…

AOJ 0560 - Planetary Exploration

aoj

久しぶりに番兵法を用いました. 方針はdp[y][x][t]を(y, x')()で地形がtとなる個数とします. すると,(x1, y) (x2, y)間()の地形tの個数はdp[y][x2] - dp[y][x1-1]となります.((1, 1)起点なので負になりません.嬉しいですね) (x1, y1) (x2, y2)間ではyを…

AOJ 1051 - Citation Format

aoj

書くだけ #include<iostream> #include<vector> struct Pages{ int first, last; }; std::vector<Pages> v; void add(int n){ for(int i=0;i</pages></vector></iostream>

AOJ 0268 - Kongo Type

aoj

全体的に疲れる.特に小数の処理が疲れます. 今,短くしています. #include<iostream> #include<algorithm> #include<iomanip> std::string to2(char c16){ if(c16 == '0')return "0000"; if(c16 == '1')return "0001"; if(c16 == '2')return "0010"; if(c16 == '3')return "0011"; if(c1</iomanip></algorithm></iostream>…

AOJ 0266 - Aka-beko and 40 Thieves

aoj

なるべく早く早くって解いたら10分かかりました. そういうのはAtCoderぐらいしか意識してないです.意識してみることにします. #include<iostream> int main(){ char map[26][2]; map[0][0] = 'x'; map[0][1] = 'y'; map['x'-'a'][0] = 'u'; map['x'-'a'][1] = 'z'; </iostream>…

AOJ 0549 - A Traveler

aoj

Segment Tree問題.蟻本読みながらのんびりつくっていました. 何でnじゃ数値でないのかなあと思ってたら,st.n != nですね. MAX_Nの見積りを誤ってました.要素は最上層が1個,次の層が2個,...,最下層(18層目)が2^17個(>100000.無駄にとっています)あり…

AOJ 0525 - Osenbei

aoj

ヒント通り,Rの小ささに注目します. 縦の裏返し方は2^R通りです.(各々について裏返すか裏返さないかの2通りがある) 横は裏返した後に,出荷できる煎餅を最大にするようにすればいい. 順番は気にしなくていいのと思ったけど,ある煎餅に対し,表裏を決め…

AOJ 0579 - Hot days

aoj

動的計画法.数をこなしたいなあ. std::absはC++11かららしい. ごっちゃになってました.ご報告ありがとうございます. #include<iostream> int main(){ //Cs[i][0]: min, Cs[i][1]: max, Cs[i][2]: 派手さ //dp[i][j]: i日目に服jを着た時の派手さの最大値 int D, N</iostream>…

AOJ 0578 - Signboard

aoj

lambdaつかって書きやすく,でも見難くなりました. 受けたときより10行減りました. #include<iostream> #include<vector> std::vector<int> findChar(const std::string &str, const char search_c){ std::vector<int> res; for(int pos=0;pos=str.find(search_c, pos), pos!=std::stri</int></int></vector></iostream>…

AOJ 0582 - Triangle Types

aoj

長い. 三角形かは(1辺)>(他の2辺の和)が成り立つか, 鈍角(Obtuse)と鋭角(Acute)は余弦定理を用いて判定した. #include<iostream> #include<cstdio> #include<algorithm> struct Triangle{ int sides[3]; }; bool checkTriangle(const Triangle& t){ for(int i=0;i<3;i++){ if(t.sides[i</algorithm></cstdio></iostream>…

AOJ 0577 - Unique number

aoj

2次元配列さんには失望しました.これからはvectorつかいます. countつかってみた. #include<iostream> #include<algorithm> #include<vector> int main(){ int N, res[200]; std::vector<int> vs[3]; std::cin >> N; for(int i=0;i<N;i++){ for(int j=0;j<3;j++){ int k; std::cin >> k; vs[j].push_back(k); } } for(int i=0;i<200;i++){ res</n;i++){></int></vector></algorithm></iostream>…

AOJ 0576 - Homework

aoj

minとmax...う,頭が. 前書いたコードが汚かったので書き直しました. #include<iostream> int main(){ int L, A, B, C, D, j, m; std::cin >> L >> A >> B >> C >> D; j = A / C + (A % C > 0); m = B / D + (B % D > 0); std::cout << L - std::max(j, m) << std::e</iostream>…

AtCoder #012(oox-)

A, B楽だと思った?残念Cが通りませんでした.Dは無理.A: 書くだけ.スペルミスしそう. #include<iostream> int toInt(std::string day){ if(day == "Monday")return 5; if(day == "Tuesday")return 4; if(day == "Wednesday")return 3; if(day == "Thursday")return </iostream>…

AOJ 0543 - Receipt

aoj

書くだけ #include<iostream> int main(){ int sum; while(std::cin >> sum, sum){ int p; for(int i=9;i--;){ std::cin >> p; sum -= p; } std::cout << sum << std::endl; } } ShortCodingみたいなもの. C++では109byteで妖怪イチオオイ.どこ減らすかとか方針変えるかと</iostream>…

AOJ 0526 - Boat Travel

aoj

その時の運行状況でdijkstra法をつかうだけです. #include<iostream> const int INF = 1 << 24, MAX_N = 101; int n, cost[MAX_N][MAX_N], d[MAX_N], used[MAX_N]; int dijkstra(int s, int g){ for(int i=1;i<=n;i++){ d[i] = INF; used[i] = false; } d[s] = 0; whi</iostream>…