zoukankan      html  css  js  c++  java
  • POJ 1742 hdu 2844 Coins

    题目链接http://poj.org/problem?id=1742

    http://acm.hdu.edu.cn/showproblem.php?pid=2844

    题目分类:动态规划

    代码

    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #include<algorithm>
    
    using namespace std;
    int n,m;
    bool flag[100009];
    
    struct P
    {
        int a,b;
    
    }point[200];
    
    int cmp(P X,P Y)
    {
        return X.a<Y.a;
    }
    
    int main()
    {
        while(scanf("%d %d",&n,&m)&&(n+m))
        {
            memset(point,0,sizeof(point));
            memset(flag,0,sizeof(flag));
    
            for(int i=1;i<=n;i++)
            {
                scanf("%d",&point[i].a);
            }
            for(int i=1;i<=n;i++)
            {
                scanf("%d",&point[i].b);
            }
            sort(point+1,point+n+1,cmp);
            int sum[100005];
    
            flag[0]=1;
            for(int i=1;i<=n;i++)
            {
                memset(sum,0,sizeof(sum));
                for(int k=point[i].a;k<=m;k++)
                {
                    if(flag[k-point[i].a]&&sum[k-point[i].a]<point[i].b&&!flag[k])
                    {
                        sum[k] = sum[k-point[i].a] + 1;
                        flag[k] = 1;
                    }
                }
            }
    
            int ans=0;
            for(int i=1;i<=m;i++)
            {
                if(flag[i])
                {
                    //printf("sss==   %d
    ",i);
                    ans++;
                }
            }
            printf("%d
    ",ans);
        }
        return 0;
    }
    #include<bits/stdc++.h>
    
    using namespace std;
    
    bool dp[100005];
    int TmpVal[105];
    int val[10005];
    
    int main()
    {
        cin.sync_with_stdio(false);
        cout.sync_with_stdio(false);
        int n, m;
        while(cin>>n>>m)
        {
            if(n==0 && m==0)
                break;
            memset(dp, 0, sizeof(dp));
            for(int i=1;i<=n;i++)
                cin>>TmpVal[i];
            int N = 0;
            for(int i=1;i<=n;i++)
            {
                int num;
                cin>>num;
                int j = 1;
                while(j<=num)
                {
                    val[++N] = TmpVal[i] * j;
                    num -= j;
                    j = (j<<1);
                }
                if(num)
                {
                    val[++N] = TmpVal[i] * num;
                }
            }
            dp[0] = 1;
            for(int i=1;i<=N;i++)
            {
                for(int j=m;j>=val[i];j--)
                {
                    if(dp[j-val[i]])
                        dp[j] = 1;
                }
            }
            int ans = 0;
            for(int i=1;i<=m;i++)
                if(dp[i])
                    ans++;
            printf("%d
    ", ans);
        }
        return 0;
    }
    anytime you feel the pain.hey,refrain.don't carry the world upon your shoulders
  • 相关阅读:
    关于terminal
    如何从word、excel、ppt中提取flash文件?
    backbone event inherit
    backbonejscomplexmodel
    ssh
    on off trigger
    从数组中删除指定值
    jstl 标签报错 Unterminated &lt;%@ page tag 错误 .
    selenium + python自动化测试环境搭建
    自勉一则
  • 原文地址:https://www.cnblogs.com/gaoss/p/4937763.html
Copyright © 2011-2022 走看看