这道题斜率卡精度。如果你这样求斜率:
inline double X(int i) {
return (double)-s[i];
}
inline double Y(int i) {
return (double)g[i] - s[i]*s[i];
}
inline double cal(int i, int j) {
if (s[i] == s[j]) return -1e18;
return (Y(i) - Y(j)) / (X(i) - X(j));
}
就会wa两个点。
要过的话得这样写
double cal(int i, int j) {
if (s[i] == s[j]) return -1e18;
return 1.0*((g[i] - s[i] * s[i]) - (g[j] - s[j] * s[j])) / (s[j] - s[i]);
}