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

0503:Cup

AOJ

カップをAかCのどちらかに集める問題。 最初の移動パターンが2通り、それ以降は 直前に移動した逆を除くと1通りしかないので カップの動きをトレースした。 #include<iostream> #include<algorithm> #include<vector> #include<stack> #include<string> #include<climits> #include<deque> using namespace std; int m</deque></climits></string></stack></vector></algorithm></iostream>…

0507:Square

AOJ

整数nの分割を辞書順に出力する問題。nを現在並べられるブロックの個数、 mを直前に並べたブロックの個数として 再帰関数を書いた。 #include<iostream> #include<vector> #include<algorithm> using namespace std; void func(int n, int m, vector<int>res){ if(n==0){ for(int i=0;i</int></algorithm></vector></iostream>

0579:Hot days

動的計画法で解いた。dp[ i ][ j ] := i+2日目に服Xjを選んだ場合の派手さの差の合計の最大値 #include<iostream> #include<vector> #include<algorithm> using namespace std; int main(void){ int d,n,t,a,b,c,dp[202][202]; vector<int>T,A,B,C; cin >> d >> n; for(int i=0;i<d;i++){ cin >> t; T.push_ba</d;i++){></int></algorithm></vector></iostream>…

0590:Available Areas

AOJ

n個の部屋の面積Sが与えられ、S=2xy+x+yが 成り立たない部屋の個数を出力する問題。S=2xy+x+y S-x=(2x+1)y だから (S-x)mod(2x+1)=0 の時面積Sの部屋が作れる。 #include<iostream> #include<cmath> using namespace std; bool is_room(int S){ for(int i=1;i*i<=S;i++) if((S</cmath></iostream>…

0586:Palindrome

AOJ

桁数が2nまたは2n+1の回文素数の中で最大のものを 求める問題。その桁数の回文素数がなかった場合、 その桁数の最大の数を出力する。桁数が偶数の回文数は11の倍数となるので、 n>1 かつ c それ以外はその桁の大きい回文数から順に素数判定した。 #include<iostream> #</iostream>…

0582:Triangle Types

AOJ

三平方の定理で解いた。 #include<iostream> #include<cmath> #include<algorithm> using namespace std; int main(void){ int a,b,c,res[4]={}; while(cin >> a >> b >> c){ if(a+b<=c || a+c<=b || b+c<=a){ for(int i=0;i<4;i++){ cout << res[i]; if(i<3)cout <<" "; } cout <</algorithm></cmath></iostream>

0585:Nearest Two Points

最近点対問題を蟻本を参考に実装。 #include<cmath> #include<algorithm> #include<iostream> #include<vector> #include<climits> #include<cfloat> using namespace std; double EPS = 1e-10; double add(double a, double b){ if(abs(a+b) < EPS * (abs(a)+abs(b)))return 0; return a+b; } struct point{ doubl</cfloat></climits></vector></iostream></algorithm></cmath>…