现在的位置: 首页 > 综合 > 正文

Codeforces Round #220 (Div. 2)(A,B,C,D)

2014年07月18日 ⁄ 综合 ⁄ 共 560字 ⁄ 字号 评论关闭

比赛入口: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大,问题也就解决了。


抱歉!评论已关闭.