zoukankan      html  css  js  c++  java
  • POJ_2229_Sumsets_(动态规划)

    描述


    http://poj.org/problem?id=2229

    将一个数n分解为2的幂之和共有几种分法?

    Sumsets
    Time Limit: 2000MS   Memory Limit: 200000K
    Total Submissions: 16207   Accepted: 6405

    Description

    Farmer John commanded his cows to search for different sets of numbers that sum to a given number. The cows use only numbers that are an integer power of 2. Here are the possible sets of numbers that sum to 7:

    1) 1+1+1+1+1+1+1
    2) 1+1+1+1+1+2
    3) 1+1+1+2+2
    4) 1+1+1+4
    5) 1+2+2+2
    6) 1+2+4

    Help FJ count all possible representations for a given integer N (1 <= N <= 1,000,000).

    Input

    A single line with a single integer, N.

    Output

    The number of ways to represent N as the indicated sum. Due to the potential huge size of this number, print only last 9 digits (in base 10 representation).

    Sample Input

    7

    Sample Output

    6

    Source

    分析


    对i讨论:

    1.i是奇数:

      分成的序列中必有1,所以可将i分为1+(i-1),所以f[i]=f[i-1];

    2.i是偶数:
      (1).分成的序列中有1:

        同奇数,f[i]=f[i-1];

      (2).分成的序列中没有1:

        序列中的所有数都是2的倍数,那么任一种序列中的各个数/2,就得到了i/2的序列,那这种情况下,i的序列数就和i/2的序列数相同即f[i]=f[i/2];

      综上:f[i]=f[i-1]+f[i/2];

     1 #include<cstdio>
     2 
     3 const int maxn=1000005,mod=1e9;
     4 int n,f[maxn];
     5 
     6 int main()
     7 {
     8 #ifndef ONLINE_JUDGE
     9     freopen("sum.in","r",stdin);
    10     freopen("sum.out","w",stdout);
    11 #endif
    12     scanf("%d",&n);
    13     f[1]=1;
    14     for(int i=2;i<=n;i++)
    15     {
    16         if(i&1) f[i]=f[i-1];
    17         else f[i]=(f[i-1]+f[i/2])%mod;
    18     }
    19     printf("%d
    ",f[n]);
    20 #ifndef ONLINE_JUDGE
    21     fclose(stdin);
    22     fclose(stdout);
    23 #endif
    24     return 0;
    25 }
    View Code
  • 相关阅读:
    架构漫谈阅读笔记
    《七步掌握业务分析》读书笔记六
    《七步掌握业务分析》读书笔记五
    《七步掌握业务分析》读书笔记四
    使用JSON Web Token完成用户认证(REST framework JWT Auth)
    APIView与GenericAPIView
    支付宝支付
    视频托管和插入广告
    redis淘汰机制
    redis五种数据结构和应用场景
  • 原文地址:https://www.cnblogs.com/Sunnie69/p/5425178.html
Copyright © 2011-2022 走看看