zoukankan      html  css  js  c++  java
  • 51nod 1413 权势二进制 背包dp

    题目来源: CodeForces
    基准时间限制:1 秒 空间限制:131072 KB 

    一个十进制整数被叫做权势二进制,当他的十进制表示的时候只由0或1组成。例如0,1,101,110011都是权势二进制而2,12,900不是。

    当给定一个n的时候,计算一下最少要多少个权势二进制相加才能得到n。

    Input
    单组测试数据。
    第一行给出一个整数n (1<=n<=1,000,000)
    Output
    输出答案占一行。
    Input示例
    9
    Output示例
    9
    思路:完全背包刚刚装满背包;
    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    #define pi (4*atan(1.0))
    #define eps 1e-14
    const int N=2e5+10,M=1e6+10,inf=1e9+10,mod=1e9+7;
    const ll INF=1e18+10;
    int a[N];
    int check(int x)
    {
        while(x)
        {
            if(x%10!=0&&x%10!=1)
                return 0;
            x/=10;
        }
        return 1;
    }
    int dp[M];
    int main()
    {
        int flag=0;
        for(int i=1;i<=1000000;i++)
            if(check(i))
            a[flag++]=i;
        int n;
        scanf("%d",&n);
        for(int i=0;i<=n;i++)
            dp[i]=inf;
        dp[0]=0;
        for(int i=0;i<flag;i++)
        {
            for(int t=a[i];t<=n;t++)
            {
                dp[t]=min(dp[t],dp[t-a[i]]+1);
            }
        }
        printf("%d
    ",dp[n]);
        return 0;
    }
  • 相关阅读:
    Istio安装配置及使用
    Istio介绍
    Rancher管理k8s集群
    EFK部署
    常见日志收集方案及相关组件
    Prometheus Pushgateway
    Prometheus监控拓展
    Prometheus PromQL语法
    开始新工作了
    SpringBlade 新系统 运行
  • 原文地址:https://www.cnblogs.com/jhz033/p/5998069.html
Copyright © 2011-2022 走看看