class SalaryCalculator {
public:
double calcHours(int P1, int P2, int salary) {
double s = 0.00000000001, b = 1e200;
for(int n = 10000; n--; ){
double c = (s + b) / 2.0;
double p = min((double)c, 200.0)*(double)P1 + max((double)c - 200.0, 0.0)*(double)P2;
if( p < salary )s = c;
else b = c;
}
return s;
}
};
500class RGBStreet {
public:
int estimateCost(vector <string> h) {
const int size = h.size();
const int R = 0, G = 1, B = 2;
int cost[size][3];
for(int i=0; i<h.size(); ++i){
istringstream iss( h[i] );
iss >> cost[i][R] >> cost[i][G] >> cost[i][B];
}
const int inf = 1 << 25;
int t[size][3];
fill( &t[0][0], &t[size-1][3], inf );
t[0][R] = cost[0][R];
t[0][G] = cost[0][G];
t[0][B] = cost[0][B];
for(int i=1; i<size; ++i){
for(int j=0; j<3; ++j){
for(int k=0; k<3; ++k){
if(j == k)continue;
t[i][k] = min(t[i][k], t[i-1][j] + cost[i][k]);
}
}
}
return min( t[size-1][R], min( t[size-1][G], t[size-1][B] ) );
}
};
1000うーむ。
0 件のコメント :
コメントを投稿