• poj -2229 Sumsets (dp)


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

    题意很简单就是给你一个数n,然后选2的整数幂之和去组成这个数。问你不同方案数之和是多少?

    n很大,所以输出后9位即可。

    dp[i] 表示组成i的不同方案数,那么 dp[1]=1;dp[2]=2;

    if(i%2) dp[i]=dp[i-1] ;  i如果是奇数,那么只能在i-1的每个方案数前面加上1得到i,所以方案数相等。

    else dp[i]=dp[i-1]+dp[i/2] ;  i如果是偶数,一种可能是i有两个1,在i-1的每个方案前面加上1,,还有一种是i全部偶数的情况,那么可以由dp[i/2]推出。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cmath>
     4 #include <vector>
     5 #include <cstring>
     6 #include <string>
     7 #include <algorithm>
     8 #include <string>
     9 #include <set>
    10 #include <functional>
    11 #include <numeric>
    12 #include <sstream>
    13 #include <stack>
    14 #include <map>
    15 #include <queue>
    16 #pragma comment(linker, "/STACK:102400000,102400000")
    17 #define CL(arr, val)    memset(arr, val, sizeof(arr))
    18 
    19 #define ll long long
    20 #define inf 0x7f7f7f7f
    21 #define lc l,m,rt<<1
    22 #define rc m + 1,r,rt<<1|1
    23 #define pi acos(-1.0)
    24 
    25 #define L(x)    (x) << 1
    26 #define R(x)    (x) << 1 | 1
    27 #define MID(l, r)   (l + r) >> 1
    28 #define Min(x, y)   (x) < (y) ? (x) : (y)
    29 #define Max(x, y)   (x) < (y) ? (y) : (x)
    30 #define E(x)        (1 << (x))
    31 #define iabs(x)     (x) < 0 ? -(x) : (x)
    32 #define OUT(x)  printf("%I64d
    ", x)
    33 #define lowbit(x)   (x)&(-x)
    34 #define Read()  freopen("a.txt", "r", stdin)
    35 #define Write() freopen("b.txt", "w", stdout);
    36 #define maxn 1000000000
    37 #define N 1000000
    38 #define mod 1000000000
    39 using namespace std;
    40 
    41 int n;
    42 long long dp[N];
    43 
    44 int main()
    45 {
    46     //Read();
    47     dp[1]=1;dp[2]=2;
    48     for(int i=3;i<=N;i++)
    49     {
    50         if(i%2) dp[i]=dp[i-1];
    51         else dp[i]=(dp[i-1]+dp[i/2])%mod;
    52     }
    53     scanf("%d",&n);
    54     printf("%d
    ",dp[n]);
    55     return 0;
    56 }
  • 相关阅读:
    Mybatis学习随笔3
    Mybatis学习随笔2
    Mybatis学习随笔
    Java校招面试-什么是线程安全/不安全
    装饰器2
    装饰器
    默认传参的陷阱
    处理日志文件
    第二天
    用户登录
  • 原文地址:https://www.cnblogs.com/nowandforever/p/4440133.html
Copyright © 2020-2023  润新知