luoguP6510 奶牛排队
1.先确定右端点,再找左端点,将问题转化
2.假设右端点为max,向左找<max的数转化为找第一个>=的值,设为i,则i+1至当前位置均满足要求,好处是可用单调栈优化,将O(n*n)降至O(n);
3.再枚举左端点,并检查当前区间无更小值
4.枚举从右往左,可优化剪枝
5.注意审题,ans不为1,应特判 !!!
单调栈优化是一个实用的优化方法,可用于找小于当前值的区间
枚举可剪枝
1.先确定右端点,再找左端点,将问题转化
2.假设右端点为max,向左找<max的数转化为找第一个>=的值,设为i,则i+1至当前位置均满足要求,好处是可用单调栈优化,将O(n*n)降至O(n);
3.再枚举左端点,并检查当前区间无更小值
4.枚举从右往左,可优化剪枝
5.注意审题,ans不为1,应特判 !!!
单调栈优化是一个实用的优化方法,可用于找小于当前值的区间
枚举可剪枝