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 件のコメント :
コメントを投稿