(Global Round 4)题解
(zhanglichen 2021.1.3)
(A.Prime Minister)
给出一个数组,请你选出一些元素,使得这些元素的和超过数组总和的一半,同时里面都小于等于(a_1)的一半。(a_1)必选。
(Solution)
简单模拟。
时间复杂度(O(n))。
(B.WOW Factor)
给出一个只包含(w,v,o)的字符串,连续的(2)个(v)可以视作一个(w)。询问(wow)子串的数量。
(Solution)
常见套路,一段连续的长度为(x)的(v)可以视作(x-1)个(w)。对每个(o)算一下贡献即可。
时间复杂度(O(n))。
(C.Tiles)
需要你用如图所示的瓷砖拼成一个(h*w)的地板,询问有多少种拼法。
(Solution)
常见套路,先确定第(1)行的方案数量,再确定后面几行的方案数量。
财富密码是(2^{h+w})。
时间复杂度(O(h+w))/(O(log(h+w)))。
(D.Prime Graph)
给出一个(n),请你构造一个(m)条边的图,使得(m)是素数,同时每个点都是素数。
(Solution)
数学直觉不好的我打表后发现,(n)在距离它很近的位置就能找到(1)个素数。
因此我们可以先建一个环,然后在环上加边,直到边数是素数时停止。可以保证每个点的度数是(2)或(3)。
时间复杂度(O(n))。
(E.Archaeology)
给出一个只包含(a,b,c)的字符串,保证相邻的(2)个字符不相同。
询问是否有长度大于等于(n/2)的回文子串。
(Solution)
找题目里的关键性质:(n/2)和相邻的(2)个字符不同,只包含(3)种字符。
性质:取前(2)个字符和最后(2)个字符,必有相同的字符。
因此就不断从前面(2)个取一个,后面(2)个取一个即可。
如果最后剩下的长度小于(4),随便取一个作为回文串中心即可。
时间复杂度(O(n))。
(F1.Short Colorful Strip)
有个长度为(m)公分的布,要在上面每公分都染上颜色,整块布染恰好(n(n=m)n(n=m))种颜色。颜色标号从(1)到(n)。保证颜色互不相同。染色需遵循:
从颜色(1)到颜色(n)依次,即必须先染标号小的颜色
2.每次可以染任意一个区间,但必须满足这个区间之前的颜色是相同的。
询问将这块布染成所给颜色的方案数。
(Solution)
看了大神的题解还是一知半解,区间(DP)还是太弱了,想拿银牌必须把区间(DP)练好。
定义状态(f(l,r))表示染好((l,r))这个区间的方案数,(g(l,r))表示染完最小的元素后再染这个区间的方案数。
(g(l,r)=f(l,p+1)*f(p+1,r))
(f(i,j)=sum_{k=l}^{r}g(l,k)*f(l+1,r))
最后(f(1,n))即为答案。
时间复杂度(O(n^3))