请注意主函数中的单调队列,while中对比的部分要取等,即>=或<=
如下:
while(d.size() > 1 && (long double)(Y(d.back()) - Y(d[d.size() - 2])) * (X(i) - X(d[d.size() - 2])) > (long double)(Y(i) - Y(d[d.size() - 2])) * (X(d.back()) - X(d[d.size() - 2]))) d.pop_back();
wa
while(d.size() > 1 && (long double)(Y(d.back()) - Y(d[d.size() - 2])) * (X(i) - X(d[d.size() - 2])) >= (long double)(Y(i) - Y(d[d.size() - 2])) * (X(d.back()) - X(d[d.size() - 2]))) d.pop_back();
ac