这个题目数据量比较大,还是平方级DP肯定TLE没跑,所以采用凸包优化的方式压缩时间复杂度,凸包优化思路有点绕,梳理半天记录一下自己的分析笔记
凸包点序列中查找和直线的切点的方法
最后是Python 代码,这个题因为斜率K是一直变大的,所以还有个优化,凸包序列中的点如果斜率小于当前迭代i时候计算出来的斜率,那后续的直线不可能切到这些点上,因此把斜率较小的点全部从队列尾删掉,实际测试好像有没有这个优化,运行时间都没差多少
from collections import deque
N = int(input())
S = int(input())
St = [0] * N
Sc = [0] * N
for i in range(N):
St[i], Sc[i] = map(int, input().split())
for i in range(1, N):
St[