2016SDAU课程练习三1020

原创 2016年05月31日 08:26:29

1.题目编号:1020
2.简单题意:多重背包问题

有N种物品和一个容量为V的背包。第i种物品最多有n[i]件可用,每件费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用
总和不超过背包容量,且价值总和最大。
3.解题思路形成:f[i][v]=max{f[i-1][v-k*c[i]]+k*w[i]|0<=k<=n[i]}

4.感想:

5.AC代码:

#include<stdio.h>

#include<string.h>
int f[100001];
int main()
{
    int i,j,k,n,m,v,tot;
    int a[101];
    int b[101];
    while(scanf("%d%d",&n,&v),n||v)
    {
        for(i=0;i<n;i++)
            scanf("%d",&a[i]);
        for(i=0;i<n;i++)
            scanf("%d",&b[i]);
        memset(f,0,sizeof(f));
        f[0]=1;
        tot=0;
        for(i=0;i<n;i++)
        {
            if(a[i]*b[i]>=v)
            {
                for(j=a[i];j<=v;j++)
                    if(f[j-a[i]]&&!f[j])
                    {f[j]=1;tot++;}
                continue;
            }
            k=1;
            while(k<b[i])
            {
                for(j=v;j-k*a[i]>=0;j--)
                    if(f[j-k*a[i]]&&!f[j])
                    {f[j]=1;tot++;}
                   b[i]-=k;
                k<<=1;
            }
            for(j=v;j-a[i]*b[i]>=0;j--)
                if(f[j-a[i]*b[i]]&&!f[j])
                {f[j]=1;tot++;}
        }
        printf("%d\n",tot);
    }
    return 0;
}

2016SDAU课程练习三1004

题目大意: 由2,3,5,7组成的数给定5842个,输入n,求第n个数。 Sample Input 1 2 3 4 11 12 13 21 22 23 100 1000 5842 0 Sam...
  • qq_34277475
  • qq_34277475
  • 2016年04月27日 15:09
  • 50

2016SDAU课程练习一1000A

Problem A Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Sub...
  • john_nine
  • john_nine
  • 2016年03月15日 21:31
  • 68

2016SDAU课程练习一1004

Problem E  Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Su...
  • qq_34264704
  • qq_34264704
  • 2016年03月21日 19:54
  • 81

2016SDAU课程练习一1000

简单题意: 有400个房间:,需要从一间房间搬桌子到另一间房间,而走廊只有一张桌子的宽度。 搬一次需要10分钟。输入 几 组数据,房间编号 m 到 n ,求最少需要多少分钟。样例: Samp...
  • qq_34277475
  • qq_34277475
  • 2016年03月15日 18:49
  • 71

2016SDAU课程练习一1007

Problem H  Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Su...
  • qq_34264704
  • qq_34264704
  • 2016年03月21日 19:56
  • 73

2016SDAU课程练习一1014

Problem O  Problem Description Before bridges were common, ferries were used to transport cars...
  • qq_34264704
  • qq_34264704
  • 2016年03月21日 20:06
  • 72

2016SDAU课程练习一1005

Problem F  Problem Description "Yakexi, this is the best age!" Dong MW works hard and get high p...
  • qq_34264704
  • qq_34264704
  • 2016年03月26日 14:24
  • 65

2016SDAU课程练习一1001

简单题意: 切木头。给出木头的长度和重量,当切的下一根的木头和重量都大于前一个时不用调整工具,否则调整一次一分钟。第一次切需要一分钟的准备时间。 解题思路及形成过程: 刚开始的时候我是按照1004的方...
  • qq_34277475
  • qq_34277475
  • 2016年03月17日 15:59
  • 81

2016SDAU课程练习一1001

Problem B  Problem Description There is a pile of n wooden sticks. The length and weight of each...
  • qq_34264704
  • qq_34264704
  • 2016年03月21日 19:36
  • 104

2016SDAU课程练习一1000

Problem A Problem Description The famous ACM (Advanced Computer Maker) Company has rented a floor...
  • qq_34264704
  • qq_34264704
  • 2016年03月21日 19:24
  • 76
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:2016SDAU课程练习三1020
举报原因:
原因补充:

(最多只允许输入30个字)