Codeforces Round #209 (Div. 2)赛后补题

来源:互联网 发布:混沌与秩序数据 编辑:程序博客网 时间:2024/05/18 04:32

这一场又是作死地从C题开始做,终于在比赛时把一道题做了两个小时...

A. Table

判断有没有点在边界上即可。


B. Permutation

令a[2*i-1]=2*i.a[2*i]=2*i-1.表达式的每一项均为1.要使两个表达式的差产生2*k,只要有k项大小颠倒,就会有k*(1-(-1))=2*k

直接交换前k项a[2*i-1]与a[2*i]的值即可。


C. Prime Number

比赛时看到题目是素数就直接点了进去,谁知道是一条不归路。。。

从小到大维护提取的x^m*(x^p1+x^p2+x^p3)即可。

易知当括号里面指数为0的项的数量不是x的整数倍时,不可能完整的提取x

否则就把指数为0的项变为以前的1/x,然后括号里其他系数相应的减少1,进行下一步提取,直到不能提取为止.

注意由于是要求上下两式的最大公约数,所有最大公约数不能大于x^(a1+a2+a3+..+an)


D. Pair of Numbers

因为代码写的太搓,没想到因为数字全部相等的时候会tle...以后找不到思路的问题时去多看看初始化的地方...切记。


对于每个未被标记的数字,把从它开始后面连续的能被它整除的数全部标记。这样那些被标记的数显然不用再考虑。然后从后往前扫,对于每个未被标记的数,可通过后面连续的标记统计出被他整除的且处于它右边的共有多少个,然后在判断其前面有多少个连续且被他整除的数,累加就是区间长度+1。有数组记录被该数整除的区间左下标,并且维护l-r的最大值即可。