当前位置:首页 > 资讯 > 正文

牛客周赛 Round70(A-F)

 

A. 水题

根据题意判断四个数是否相等就可以

 

B. 模拟

根据题意,红灯时,输出红灯等待时间+通过时间

绿灯时,若能通过则直接输出通过时间,否则输出剩余绿灯时间+完整红灯时间+通过时间

 

C.

输出其中一组解,即每次只将一个黑色染成白色

 

D. 

用一个数组记录后缀的最大值,即用c[i]表示a[i]到a[n]之间的最大值,然后循环遍历,求最大值

 

E.

根据题意可以推导出,

当n为奇数时,S = 1^(1^2^3....^n)

当n为偶数时,S = 0^(1^2^3....^n)

其中,1^2^3....^n,可以由结论或者找规律得出,每4个数为一个循环,即1,n+1,0,n

 

F. 

所有连续子数组都优雅,即每两个相邻的数都“优雅”,

我们假设相邻的两个数为a,b(a>b),那么若满足条件则有:

a+x = k(b+x)

将式子两边同时减去x,再减去b,得到:

a-b = (k-1)(b+x)

由上式可知,b+x一定是a-b的约数,且b+x小于等于a-b。那么x应对所有的相邻的两个数满足此条件。记m为所有相邻的两个数的差中最小的那个,那么我们只需从1遍历到m即可,为减少时间复杂度,则只需遍历到根号m即可,然后每次遍历时再进行check

(注意两种特判,一种是数组长度为1时,另一种时数组中所有数字都相等,这时所有数字都满足条件)

 

最新文章