CodeForce - Day6
Day6
1607C - Minimum Extraction
题意:
给定一个数组,每次选择最小的数删除,其他的所有数减去这个数。
问删除的数最大值是多少。
思路:
只需要排好序,默认最大值是a[1] 然后遍历一遍a[i]-a[i-1]的求最大值即可。
因为同时减去一个数等于都没减……因为: (a[3] - a[1]) - (a[2] - a[1]) = a[3] - a[2]
代码:
1 |
|
总结:
同时减去(加上)一个数可以某种意义上认为都没有减(加)。
1593D1 - All are Same
题意:
找到一个数k,使数组内的数减去任意次k可以使整个数组相等。
思路:
求所有s[i] - s[i-1]的gcd,最后的gcd大于等于1就输出,否则输出-1。
列个式子表示一下:
a - k x = b - k y =》假设 a减去x个k 等于 b减去y个k
a - b = k (x - y)
(a - b) / k = x - y =》 从这个式子就可以看出很多东西。x和y一定是整数,k最大就是a-b,只要遍历一遍a-b,取最终的gcd就可以了。
代码:
1 |
|
总结:
列一个通式,然后化简得到数学式子,再由数学式推导题目的步骤。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Sky的博客!