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

AOJ 0126 - Puzzle

aoj

自分でも汚いと思っているので,改善したい. #include <iostream> #include <cstring> int main(){ int n, f = 0; std::cin >> n; while(n--){ if(f++)std::cout << "\n"; int sudoku[9][9], map[9][9]; memset(map, 0, sizeof(map)); for(int i=0;i<81;i++) std::cin >> sudok</cstring></iostream>…

AOJ 0122 - Summer of Phyonkichi

aoj

深さ優先探索で行けると見た. #include <iostream> #include <cstdio> #include <vector> #include <algorithm> typedef std::pair<int,int> P; P wpos[10]; int n; int dfs(int x, int y, int i){ if(i == n)return 1;//最後まで生き残れた std::vector<P> flog, water; for(int j=-1;j<=1;j++){ flog.push_b</p></int,int></algorithm></vector></cstdio></iostream>…

AOJ 0092 - Square Searching

aoj

iをnにしてしまっていたorz いつぞやかにやった正方形探索をすれば終わり #include <iostream> #include <algorithm> #include <cstring> int main(){ int n; while(std::cin >> n, n){ std::string s[n]; for(int i=0;i<n;i++){ std::cin >> s[i]; } int maxside[n][n], max = 0;//(i,j)を右下としたときつく</n;i++){></cstring></algorithm></iostream>…

AOJ 0054 - Sum of Nth decimal places

aoj

doubleで10倍すれば行けると思ったら行けなかったorz. #include <iostream> #include <cstdio> int main(){ int a, b, n; while(~scanf("%d%d%d", &a, &b, &n)){ a %= b;//小数部のみにする int res = 0; for(;n;n--){ a *= 10;//現在の少数第1位のみ取り出す res += a / b; </cstdio></iostream>…

AOJ 0057 - The Number of Area

aoj

どのくらいになるか分からなかったので,4項から判断しました. #include <cstdio> int main(){ int n, a[10001]; a[1] = 2; for(int i=2;i<=10000;i++){ a[i] = a[i-1] + i; } while(~scanf("%d", &n)){ printf("%d\n", a[n]); } return 0; }</cstdio>

AOJ 0130 - Train

aoj

1文字対策で解決.最大値だけが敵ではないですね. 適当な文字から初めて先頭を求めます.そして,逆順すれば答えとなります. この解法結構好きだ. #include <iostream> #include <map> int main(){ int n; std::cin >> n; std::string s; while(n--){ std::cin >> s; if</map></iostream>…

AOJ 0093 - Leap Year

aoj

ある期間内の閏年を出力する問題. 問題自体は簡単,この記事書くのに1時間. #include <iostream> #include <cstdio> int main(){ int a, b, d = 0; while(scanf("%d%d", &a, &b), a && b){ if(d)puts(""); else d = 1; int c = 0; for(;a<=b;a++){ if(a % 4 == 0){ if(a % 10</cstdio></iostream>…

AOJ 0036 - A Figure on Surface

aoj

#include <iostream> int main(){ while(1){ std::string s[8]; int x = 0,y = 0; for(int i=0;i<8;i++){ std::cin >> s[i]; if(std::cin.eof())return 0; } for(int i=0;i<64;i++) if(s[i/8][i%8] == '1'){x=i%8,y=i/8;break;} char res; if(y+1 < 8 && s[y+1][x] == </iostream>…

AOJ 0034 - Railway Lines

aoj

#include <cstdio> int main(){ int l[10]; float v1, v2; while(~scanf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%f,%f",l,l+1,l+2,l+3,l+4,l+5,l+6,l+7,l+8,l+9,&v1,&v2)){ float distance = 0, goal; for(int i=0;i<10;i++)distance+=l[i]; goal = distance * v1 / (v1+v2</cstdio>…

AOJ 0022 - Maximum Sum Sequence

aoj

久しぶりにやった. #include <iostream> #include <vector> int main(){ int n; while(std::cin >> n, n){ std::vector<int> v; for(int i=0;i<n;i++){ int a; std::cin >> a; v.push_back(a); } int max = v[0];//ここを0にすると負け for(int i=0;i<n;i++){ int k = 0; for(int j=i;j<n;j++){ k += v[j]; if(k > max)max = k; } } std::cou…</n;i++){></n;i++){></int></vector></iostream>

AOJ 0061 - Rank Checker

aoj

ゆっくり考えすぎだから時間意識して解こう. 正確さも早さもない僕にはそれしかない. #include <cstdio> #include <map> #include <vector> #include <algorithm> typedef std::pair<int,int> Entrant; bool descending_Entrant(const Entrant& e1, const Entrant& e2){ return e1.second > e2.secon</int,int></algorithm></vector></map></cstdio>…