Codeforces Round 266 (Div. 2)


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

转载于:https://www.cnblogs.com/luowentao/p/10575543.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值