正睿OI noip2017冲刺 第一次考试T2 解题报告

这题是后来比赛完才写的

之前已经说过比赛时出现了种种状况

导致就考了1个小时

所以没时间写

题目因为版权原因不能放出来

相信dalao们读代码也能读出个大概


这题一开始没有想到暴力的树形DP

而是手推了一个公式f[n]=f[n-1]*num

结果发现每种情况的num是不知道的

所以写不下去了


后面收yjq大佬指教发现可以写一个模拟建树过程的DP

在每个点我们考虑2种情况

一是添加左儿子 二是添加深度最小的无右儿子节点的右儿子

那么就可以转移了

用f[i][j]表示有i个叶子节点,有j条左边

那么加左儿子这条边时:

if (j<m-1)
  f[i][j+1]=(f[i][j+1]+f[i][j])%mo;

加深度最小的无右儿子节点的右儿子这条边时:

if (j>0)
   f[i+1][j-1]=(f[i+1][j-1]+f[i][j])%mo;

最后结果则为f[i][0]




  • 1
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页
评论

打赏作者

syh0313

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值