「こんなきれいな星も、やっぱりここまで来てから、見れたのだと思うから。だから・・もっと遠くへ・・」

TC SRM655 & TCO2015 R1A

旧坑未填,新坑又开……
准备有时间刷一点TC题……

SRM655:

250: 考虑最后一次涂色,容易发现任何一个k*k同色矩形都是可以的。然后取消掉这次涂色后,就相当于这块矩形在之后的判定中既可以视为黑色也可以视为白色。如此反复即可。
500: 注意到d的次序无关。不妨把d排序。然后用一个5维数组做状态,表示5个询问当前的余数。转移显然,但是直接做会T。注意到连续转移相同的d很多次是可以推公式一次做掉的,这样就只要转移32次就行了。
1000: 首先容易证明,如果对于某个红点,不存在一条过它的直线,使得所有蓝点落在同一侧,那这个红点可以直接删掉。
做完这一步后,对每个红点找一个蓝点,过它们的有向直线是L[i],使得其他蓝点都在这条直线的左侧。可以证明,一组红点满足条件当且仅当对于所有的有向直线L,其右侧都至少还有一个红点存活着。而且可以证明,那么每个红点可以“满足”的有向直线的极角组成一个区间。
于是问题转化为,有一个环,和若干环上的区间,每个区间有一定概率存在,问存在的区间覆盖了整个环的几率是多少。
先破环为链,然后把区间按照“它可以覆盖的最小的点”排序,这样考虑按这个次序dp。容易发现前i个区间覆盖出来的结果一定是[1,x]\cup[y,n]。这样就可以dp了。

TCO2015 R1A:

250: 比赛时候逗逼了。其实注意到L和R相差比较大的时候肯定答案就是5了,相差比较小时候直接平方暴力。
500: 实际上一个方案可行只需要结束的时候两两位置不同就行了。显然K>n时候就是一直在环上转圈圈了,不会再撞上了,因此K>n时候可以设K=n。然后直接计算每个点k步后在哪里,相同位置只能选最多一个。
1000: 利用Halls定理直接做。比赛时候还剩10分钟时候开1000,5分钟写完,然后断网了没交上去= =……