Codeforces Round 266 (Div. 2)

传送门

A - Cheap Travel (暴力枚举)

思路

直接暴力枚举即可

B - Wonder Room (暴力)

思路

暴力判断其中一个值 最多判断sqrt(n)

C - Number of Ways (前缀和)

思路

首先答案不是3的倍数就肯定无解

然后就是切两刀的位置

第一刀肯定是1/3的位置

第二道肯定是2/3的位置

然后乘法定理一下

D - Increase Sequence (DP)

思路

想了很久

$dp[ans][num]$ 表示位置在ans并且前面还有k个左端点还没匹配完成

对于

$a[i]+num==h$ 那么就说明前面的num个还没匹配到的左端点都可以满足他

所以他可以选择

do nothing $dp[i][j]+=dp[i-1][j]$

或者画一个右括号 $dp[i][j]+=dp[i-1][j] \times j$ 因为这个右端点可以和左边num个左端点任意匹配

如果$a[i]+num==h-1$ 说明前面num个还没有满足i这个点,那么可以肯定的就是他必须要一个左括号!

所以$dp[i][j]+=dp[i][j-1]$

同时他可以不仅仅画一个左括号,他还可以同时作为一个左端点一个右端点

所以$dp[i][j]+=dp[i][j] \times (j+1)$ $j+1$是因为他不仅可以和左边的$j$个左端点匹配还可以和自己(必须贡献)的左括号匹配