2409

AI题解


一刀二分三角

x0的取值范围是从0,到xb
切出的图形,在0,xc之间时,在左侧是三角形,右侧是四边形
为xc时,是两个三角形
在xc与xb之间时,左侧是四边形,右侧是三角形
就算三角形的面积
在左侧时,算出AC斜率,由x0,算出三角形的高,得到其面积,判断是否为原来三角形面积的两倍
在右侧时,底边就是bc上交点减去ab上交点
最后是原始三角形的总面积,考虑BC在x轴上的交点
这个时候需要考虑yb和0的大小关系,如果b在x轴上方,那么就是从c往x轴引垂线,然后乘xb
如果在x轴下方,那就是算BC在X上交点,然后乘yc-yb
漏看了一个关键条件,就是B的y坐标为0,即B就是在y轴上的
那枚举0,xb
在0,xc之间时,
AI提升


Q2

枚举,i为子数组起点,然后尝试不断往后枚举
又或者滑动窗口?因为遇到非法字符时,那么前面的所有子数组都会断在这个非法字符上
那么遇到一个新数字时,就把它加入到滑动窗口中
遇到非法字符时,就再加上滑动窗口此时的长度
下次的滑动窗口起始点是该非法字符的下一个字符
貌似还是有问题
还是先枚举吧,不出意外超时了
还是滑动窗口,当遇到非法时,应该是求此时滑动窗口所组成数组所能构成的所有子数组数量
所有组合数的求和,就是2的次幂,如果长度是n,那总和是2^n-1?
不对,它必须得是连续的,是连续的子数组
所以就还是要求连续子数组的数量

