zoukankan      html  css  js  c++  java
  • 51nod1048

    题意

    51nod

    做法一(暴力)

    (f_n)(n)分解方案数

    • (n~is~even)
      (f_n=f_{n-1}+f_{n/2})
    • (n~is~odd)
      (f_n=f_{n-1})

    做法二

    考虑将(n)二进制分解,然后出现有效位分别为(a_1,a_2,...,a_m)
    (n)分解后,定义最小表示法为升序排列
    (n)的最小表示法,可以唯一地依次分段,和为(2^{a_1},2^{a_2},2^{a_m})

    (f_{i,j})为处理完(a_i),最大数为(2^j)
    (g_{i,j})为处理(2^i),最大数为(2^j)

    [egin{aligned}\ &f_{1,j}=g_{a_1,j},g_{i,i}=1\ &f_{i,j}=sumlimits_{k=0}^j f_{i-1,k} imes g_{a_i-k,j-k}(i eq 1)\ &g_{i,j}=sumlimits_{k=0}f_{i-1,k} imes f_{i-1-k,j-k}(j eq i)\ end{aligned}]

    要写高精

  • 相关阅读:
    MMA7660
    使用外设需要做的事情
    BH1750
    English
    2016年学习计划
    博客园
    TIM
    USART
    swift与oc的混合编程
    SVN工具如何创建分支和合并分支的
  • 原文地址:https://www.cnblogs.com/Grice/p/12780612.html
Copyright © 2011-2022 走看看