layout: post
title: Codeforces Round 266 (Div. 2)
author: "luowentaoaa"
catalog: true
tags:
mathjax: true
- codeforces
- DP
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\)个左端点匹配还可以和自己(必须贡献)的左括号匹配