比赛 叫图论的DP题 评测结果 WWWWA
题目名称 装箱问题 最终得分 20
用户昵称 jmsyzsfq 运行时间 0.012 s
代码语言 C++ 内存使用 10.04 MiB
提交时间 2017-08-29 20:55:07
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
int a[1000000];
int f[50001][31];
int main(){
	freopen("npack.in","r",stdin);
	freopen("npack.out","w",stdout);
    int V,n;
    cin>>V>>n;
    for(int i=1;i<=n;++i)cin>>a[i],f[0][i]=1;
    f[0][0]=1;
    for(int i=1;i<=n;++i)
    {
    	for(int j=a[i];j<=V;++j)
    	{
    		f[j][i]=f[j][i-1];
    		if(f[j][i-1]==1||f[j-a[i]][i-1]==1)f[j][i]=1;
    		if(f[j][i-1]==1&&j+a[i]<=V)f[j+a[i]][i-1]=1;
    	}
    }
    for(int i=V;i;--i)
	if(f[i][n]==1)
    {
    	cout<<V-i;
    	return 0;
    }
    return 0;
}