C. Manhattan Subarrays
是好题要读好题。。。
题意:找到一个子序列使得其中其中不包含3点组成单调递增或单调递减,那么该子序列对答案贡献为1。求有多少这样的子序列
大佬思路
对于长度为3的子序列,如果单调递增或者递减那么这段子序列舍弃
对于长度为4的子序列,还是看代码吧
rep(i,1,n-2) {
if(a[i]>=a[i+1]&&a[i+1]>=a[i+2]) continue;
if(a[i]<=a[i+1]&&a[i+1]<=a[i+2]) continue;
ans++;
}
rep(i,1,n-3) {
实际效果跟枚举是否有单调一样,但二分抄代码嘛
if((a[i+1]-a[i])*(a[i+2]-a[i+1])<0&&
(a[i+1]-a[i])*(a[i+3]-a[i+1])<0&&
(a[i+2]-a[i])*(a[i+3]-a[i+2])<0&&
(a[i+2]-a[i+1])*(a[i+3]-a[i+2])<0
) ans++;
}