class StringSegment { public: double average(string s) { int cnt = 0; for(int i=0; i<s.size(); ++i){ ++cnt; for(; i+1 < s.size(); ++i){ if(s[i] != s[i+1])break; } } return (double)s.size() / (double)cnt; } };500
解説読んだ。よく分からん。
1000
class ContestSchedule { public: double expectedWinnings(vector <string> c) { const int size = c.size(); int begin[size]; int end[size]; double p[size]; double t[size][size]; fill( &t[0][0], &t[size-1][size], 0 ); for(int i=0; i<size; ++i){ istringstream iss( c[i] ); iss >> begin[i] >> end[i] >> p[i]; p[i] /= 100.0; } for(int i=0; i<size; ++i){ t[0][i] = p[i]; } for(int i=0; i+1<size; ++i){ for(int j=0; j<size; ++j){ if( t[i][j] == 0.0 )continue; for(int k=0; k<size; ++k){ if( end[j] <= begin[k] ){ t[i+1][k] = max( t[i+1][k], t[i][j] + p[k] ); } } } } return *max_element( &t[0][0], &t[size-1][size] ); } };
0 件のコメント :
コメントを投稿