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\)个左端点匹配还可以和自己(必须贡献)的左括号匹配

posted @ 2019-03-21 23:21  luowentao  阅读(135)  评论(0编辑  收藏  举报