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画出来,就会发现,云的相交是正方形/月亮的可达范围是两条射线围住的。

求在月亮的可达范围内的正方形个数。

然后据说可以二分.....没看下去了。

上一篇:【DDD】领域驱动设计实践 —— 限界上下文识别


下一篇:struts2官方 中文教程 系列十:Form标签