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

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>…