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] imes j) 因为这个右端点可以和左边num个左端点任意匹配
如果(a[i]+num==h-1) 说明前面num个还没有满足i这个点,那么可以肯定的就是他必须要一个左括号!
所以(dp[i][j]+=dp[i][j-1])
同时他可以不仅仅画一个左括号,他还可以同时作为一个左端点一个右端点
所以(dp[i][j]+=dp[i][j] imes (j+1)) (j+1)是因为他不仅可以和左边的(j)个左端点匹配还可以和自己(必须贡献)的左括号匹配