zoukankan      html  css  js  c++  java
  • poj2229【完全背包-规律Orz...】

    挑战DP
    题意:
    被组合数只能是2的整数幂,然后给出一个数问有多少种组合(mod1e10);
    思路:
    完全背包做啊…还是蛮简单的…(这里取膜要改成加法,省时间…)
    dp[i]代表对于j的方案数

    贴一发吧…

    #include <iostream>
    #include <cstdio>
    #include <string.h>
    #include <stack>
    #include <queue>
    #include <map>
    #include <set>
    #include <vector>
    #include <math.h>
    #include <algorithm>
    using namespace std;
    #define LL long long
    #define INF 0x3f3f3f3f
    const double pi = acos(-1.0);
    const int mod = 1e9;
    const int N =1e6+10;
    int dp[N];
    void Init()
    {
        memset(dp,0,sizeof(dp));
        dp[0]=dp[1]=1;
        for(int i=1;i<=22;i++)
        {
            for(int j=2;j<=1000000;j++)
            {
                int v=1<<(i-1);
                if(j>=v)
                    dp[j]=dp[j-v]+dp[j];
                while(dp[j]>mod)
                    dp[j]-=mod;
            }
        }
    }
    int main()
    {
        int n;
        Init();
        while(~scanf("%d",&n))
            printf("%d
    ",dp[n]);
        return 0;
    }

    然后看了discuss的那个blog(我还是很少点这种推送的blog,看完还是蛮搞笑的。。。)

    具体也就不讲了…能这样玩也是厉害呀…)一个数乘2的情况和那个数的情况相同,谁说不是呢。弱太菜玩不出…
    挫code…………

    #include <iostream>
    #include <cstdio>
    #include <string.h>
    #include <stack>
    #include <queue>
    #include <map>
    #include <set>
    #include <vector>
    #include <math.h>
    #include <algorithm>
    using namespace std;
    #define LL long long
    #define INF 0x3f3f3f3f
    const double pi = acos(-1.0);
    const LL mod = 1e9;
    
    const int N =1e6+10;
    
    LL dp[N];
    
    int main()
    {
        dp[1]=1;
        for(int i=2;i<=1000000;i++)
        {
            if(i%2==1)
                dp[i]=dp[i-1];
            else
                dp[i]=(dp[i-1]+dp[i/2])%mod;
        }
        int n;
        while(~scanf("%d",&n))
            printf("%d
    ",dp[n]);
        return 0;
    }
  • 相关阅读:
    利用Selenium自动化web测试
    【译】.NET中六个重要的概念:栈、堆、值类型、引用类型、装箱和拆箱
    SlickGrid example 8:折线图
    SlickGrid example 7:鼠标事件
    SlickGrid example 6:Ajax加载
    SlickGrid example 5:带子项的展开收缩
    SlickGrid example 4: 过滤
    CentOS下配置iptables防火墙 linux NAT(iptables)配置
    ntp server
    parted
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/5934376.html
Copyright © 2011-2022 走看看