Codeforces Round #731 (Div. 3)
A. Shortest Path with Obstacle B. Alphabetical Strings C. Pair Programming D. Co-growing Sequence D的题意是通过下面的图推出来的
A. Shortest Path with Obstacle B. Alphabetical Strings C. Pair Programming D. Co-growing Sequence D的题意是通过下面的图推出来的
给两个个数字A,B. 求是否通过同时增加两个数或者同时减少两个数, 得到最大的gcd. 如果能, 需要同时加.减几? 典型的求gcd缺和gcd无关的题, 因为同增加/减少, 所以差值一样, 所以gcd最大就是差值, 因为gcd(0,max(A,B))最大. 然后几步嘛, 就是求比较小的数到差值的倍数的大小, 求余即可.
给一个字符串, *代表羊, .代表空位, 求怎么移动能让羊排成一列. 这题是acwing的那个模板题的衍生, 要先找到中间羊, 然后找到它的位置, 然后平移(坐标 – 第几个), 求和即可.
给一个数组, 求有多少对数, 里面的数字差等于index差. 数字差= index差, 可以转化成, 数字与index的差等于另一个数字与index的差. 所以用set找即可. 注意问的是多少对pair, 最后要乘起来后/2
给数字n, 求一个n x n的矩阵, 每两个相邻个子的大小之差不能是1. 先放单数1 3 5 7, 再放2 4 6 8 即可.
给一个整数n, 问[1,n]的区间中有多少个digit全部相同的数字. 这题就看一下啥时候想通, 1到9有9个, 然后11到99有9个, 111到999有9个…所以看出来是和1的个数与最高项的比有关.
给一个string, 问是不是有重复出现过的不连续的char. 用set直接解决即可.
这题说给一个数组, 任意两个数字都可以建一个路, 求路的负数最大是多少. 这题就画一画, 比如 0 2 5 7 10, 那么可以建立任何两个数字之间的路, 和是0. 那么5->0, 7->(0,2,), 10->(0,2,5), 都是答案要的负数路. 很简单的模式.
给一个数组, 求两个数字相乘等于index想加的pair的个数. 因为是index想加, 所以已知index的大小是从3(1+2)到2*n. 我们就按个找每个数, 看看有多少pair. 因为A[i]*A[j]=[1,2*n], 那么就知道其中一个是的范围肯定是[1, sqrt(n)]. 所以只要是i能整除j的, 都是答案的可能性.
给n个数字, 从1开始到n, 求距离最小的每个数都不在自己位置上的数组. 因为要距离最小, 所有前后swap一下即可. 注意如果是奇数,要多swap一下.