2012-07-06から1日間の記事一覧

ACM-ICPC 2012 国内予選 Problem E 鎖中経路

鎖中経路※コンテスト本番の入力が通るかどうかは未確認サンプルの図を見ると、最短経路は、両端の円の中心といくつかの円の交点を直線で結べば得られることがわかる。一方の円の中心からそれぞれの交点に到達するまでの最短経路を覚えておき、動的計画法。交…

ACM-ICPC 2012 国内予選 Problem D 鉄道乗り継ぎ

鉄道乗り継ぎ各会社ごとに全点対間最短路を求め、運賃を計算する。この運賃を使って、出発地から目的地の最安運賃を求める。 #include <iostream> #include <vector> #include <queue> #include <utility> using namespace std; int main() { const int INF = 99999999; while ( true ) { int n</utility></queue></vector></iostream>…

ACM-ICPC 2012 国内予選 Problem C 偏りのあるサイコロ

偏りのあるサイコロ #include <iostream> #include <vector> #include <cstdlib> using namespace std; // サイコロDを回転したサイコロを返す vector<int> spin( vector<int> D, int dir ) { vector<int> R; int T[4][6] = { { 3, 0, 2, 5, 4, 1 }, { 4, 1, 0, 3, 5, 2 }, { 1, 5, 2, 0, 4, 3 }, { 2, </int></int></int></cstdlib></vector></iostream>…

ACM-ICPC 2012 国内予選 Problem B 繰り返す10進数

繰り返す10進数 #include <iostream> #include <vector> #include <set> #include <algorithm> using namespace std; int next( int a, int L ) { vector<int> T(L); for ( int i=0; i</int></algorithm></set></vector></iostream>

ACM-ICPC 2012 国内予選 Problem A ミレニアム

ミレニアム #include <iostream> using namespace std; int main() { int n; cin >> n; for ( int i=0; i<n; i++ ) { int Y, M, D; cin>>Y>>M>>D; int ans = 0; while (Y<1000 ) { D++; if ( Y%3==0 && D>20 || Y%3!=0 && M%2==0 && D>19 || Y%3!=0 && M%2!=0 && D>20 ) { D = 1; M++; } if ( M>10 )</n;></iostream>…