2017-03-05 hihocoder[Offer收割]编程练习赛8题解
A
根据题意,如果nd<kl<nd+f
,则为”NO”,所以需要f>kl-nd
,其中k,n是最接近的两个,而kl-nd
是循环的,所以我下面写的是发现循环节且全都满足了就break并打印”YES”。实际上只需要f>gcd(l,d)
。
|
|
B
普通的搜索,注意输出时只输出当前部分为’1’的,其余用’0’填充
|
|
C
只理解了O(n^2)的DP,假设DP[k]表示前k个数的分割方法,对于k+1来说,DP[k+1]=DP[k]+…+DP[i]+…+DP[1]其中[i,k+1]的和不为0,这可以用前缀和计算。
D
容斥原理,用总矩形个数减去包含1个黑色矩形的,加上包含2个黑色矩形的…………。重点在于如何计算包含某个矩形的个数,设该矩形上下左右分别距边界a,b,c,d。则结果为(a+1)(b+1)(c+1)(d+1)。想法是,上下左右的点必然落在对应的线段上,而每条线段分别有a+1,b+1,c+1,d+1个点,根据组合数学,从中各取一点的总取法就是乘积。
|
|