[SRM 632]

Problem A

枚举

首先容易发现合法的一段是倍增循环出现的,当d[i]>=6时,已经不能再出现第二次了,这些数与6是等价的

所以预处理出前面256项,把d[]中大于6的全都变成6,再枚举匹配即可


Problem B

并查集

与2的幂次相似的性质,小幂次的和不会超过大幂次

所以从大到小加边,如果能把s和t联通,那么直接算进最大流里

否则合并集合


Problem C

DP

f[i][j]表示当前行为i,另一行为j的方案数

那么f[i][j]要么由本行转移来,要么由另一行转移来

如果由本行转移来,那么每个位置有两种方式(向左和向右)

如果由另一行转以来,那么每个位置有i种方式

所以转移方程为

f[i][j]=i*f[j][i-1]+2*f[i-1][j]

你可能感兴趣的:([SRM 632])