比赛入口:http://codeforces.com/contest/374
Code:https://github.com/9974/Codeforces/tree/master/220div2
A.考虑4个角(x, y),然后x与a的差值 和y与b要同奇偶。这里少考虑了一个情况,导致挂了,就是a很大(a >= n)或b很大(b >= m)时, 该点一步都动不了,这情况要特判一下。
B.比赛的时候数据错了,逗死了,每次找到连续一串和为9的串(如18181818181), 若串的长度为偶数,只有1种取法,
若串的长度为奇数,那么有(len+1)/2种取法(例子中的18181818181 把其中一个1剩下的情况)。
C.从每个‘D’点出发,记忆化一下,找到环就是inf, 如何找到环?用ins[]数组标记当前dfs的那条链,在搜的时候搜到自己链上的点就成环了,否则就取出记忆化的值。
D.我们能发现每个数只插入一次,删除也至多一次。那么我们可以一个个删数,当然用splay的化就是裸体,其实没有必要那么复杂,删除的时候我们没必要真的删除,只需标记一下即可,那么当我们删除当前序列第k个点时,那就等价与删除一个数组第k个没有标记过的点,这一步可以用 树状数组来维护, 标记点 值为0, 未标记点 值为1,
那么就等价于树状数组求第k大,问题也就解决了。