2つの木を切らずに使う様な場合を考える。何故それで正しいかはよく分からない。勘。
計算の順序によっては精度がアレ。サンプルが親切なので、気付かないってことはない。
class TimeTravellingGardener {
public:
int determineUsage(vector <int> D, vector <int> y)
{
vector<int> x;
x.push_back(0);
partial_sum(D.begin(), D.end(), back_inserter(x));
int mn = (int)y.size() - 1;
for (int i = 0; i < (int)x.size(); ++i) {
for (int j = i+1; j < (int)x.size(); ++j) {
int cnt = 0;
for (int k = 0; k < (int)x.size(); ++k) {
if (i == k || j == k) continue;
double h = (double)(y[i] - y[j]) * (double)(x[k] - x[i]) / (double)(x[i] - x[j])+ y[i];
if (h < y[k]) ++cnt
if (h > y[k]) cnt = 1 << 20;
if (h < 0.0) cnt = 1 << 20;
}
mn = min(mn, cnt);
}
}
return mn;
}
};
0 件のコメント :
コメントを投稿