CF 989
今天晚上闲来无事打了一场CF......div.2,第600名。太弱了。
T1看懂题之后发现是水题(废话),6min AC。
T2仔细思考之后发现可做,但是由于n=p的特判没确定到底有没有解,WA了一次,以为自己算法有问题,慌的一匹。
T3发现是个构造题,仔细思考发现可以很暴力的构造,写了一会,1:00AC。
看T4发现似乎可做,但是比较麻烦,回头把T2换了种方法A了。这回n == p想清楚了。
然后开始肝T4,我的算法细节很多,没打完。
最后只A了三题,600名。
T4:给你数轴上的1e5朵云,每朵云都长L,左端点为xi,有个初速度vi,只可能为±1,云不包含两端点。
月亮在坐标0位置,你可以制造风速绝对值不大于w的风,使得所有云的移速加上这个风速。
求有多少对云可以通过制造风速恰当的风而同一时刻遮盖月亮。
解①:可以发现每朵云有4种情况:在原点左右,初速度正负。然后要特判云在原点的情况。
云初速度相同一定不行,初速度相背也不行。只能相向而行。
因为速度可以小到0,所以只考虑速度上限即可。一个不等式解出来是C < v,然后v <= w,故C < w
然后把这个一次不等式的两个变量提取出来,可以得到一个约束条件( 其中之一是(b+L)(w-1)>a(w+1) ),用树状数组维护即可。
解②:
发现所有云是相对无风的(???),于是相当于移动月亮。
然后把x-t画出来,就会发现,云的相交是正方形/月亮的可达范围是两条射线围住的。
求在月亮的可达范围内的正方形个数。
然后据说可以二分.....没看下去了。