A. The Monster
给定$0 \le a, b, c, d \le 100$, 求$k_{\min}$使得$k_{min} \equiv a\ (\mod b)$且$k_{\min} \equiv c (\mod d)$
由初等数论知识知道$k_{min} \le bd + \min{a, c}$
所以枚举一下k的值就好,比赛完后想了好长时间才给自己证明这个东西……一个小时没睡着
B. Not Afraid
给定若干个集合,以及若干对数$1, -1, 2, -2, \ldots n, -n$
在$k, -k$中有且仅有一个数是“坏的”,但是你不知道是哪一个
问是否有一种情况使得给定的集合有一个集合,其中的所有数都是“坏的”
……
最开始以为是2-sat问题,后来发现完全想复杂了,直接看是不是每一个集合中都存在一个$k$,使得$k$与$-k$都在这个集合里面就好
居然还有人想hack我……
C. Berzerk
A与B在玩一个游戏,有一个圆形的棋盘,AB轮流行动,将棋子顺时针移动$s_i$格,谁先把棋子移到了1号格子就赢了。
对于每一个状态,询问是否为先手必胜/必败/无限循环状态
按照SG函数的搞法,把这个图建出来,将1号格子A先手与1号格子B先手都设成先手必败状态,然后BFS之。
- 如果一个状态是先手必败,那么它所有的后继都是先手必胜
- 如果一个状态是先手必败,那么当且仅到它所有的前驱都是先手必胜
- 如果我们最后都不能确定一个状态是否为先手必胜或是必败,那么它就是无限循环
比赛的时候一直在想顺着推的方法,结果第一组Case都过不了。比赛结束之后看了一下题解下面的评论就明白了,我们不需要特别讨论无限循环状态,按照一般讨论DAG的方式去讨论即可。
D. Legacy
区间用线段树处理。
看到这一句话就秒懂了……在比赛的时候想到常规的做法就是区间单独建一个点,但是这对复杂度的优化没有效果。借助线段树这个工具,我们只需要$O(n)$个额外的结点即可完成区间的处理。
E. Till I Collapse
主席树
看到题解中的这一句话……我又秒懂了……
我们知道答案的和是$O(n \log n)$这个级别的,所以暴力处理每一个询问的$k$即可。
对于每一个$k$,用主席树找到右端点确定时,区间颜色为$k$的最远的左端点。
需要注意的是,二分这个左端点会超时,需要在线段树上二分左端点的位置。
难怪有人一开场就把E给过了……