洛谷P2725 [USACO3.1]郵票 Stamps 題解
阿新 • • 發佈:2021-01-08
[USACO3.1]郵票 Stamps
description:
一共有
種面值為 的郵票,最多可以使用 個。問能表示出的最大面值的整數。solution:
完全揹包即可。
觀察到其實最大隻能表示到
,所以最後從小到大列舉,找到第一個無法表示的位置就行。code:
#include<cstdio>
#include<algorithm>
using namespace std;
int f[2000005];
int main()
{
int n,k;
scanf("%d%d" ,&k,&n);
for(int i=1;i<=2000000;i++)
{
f[i]=114514;
}
int x;
for(int i=1;i<=n;i++)
{
scanf("%d",&x);
for(int j=x;j<=2000000;j++)
{
if(f[j-x]+1>k)continue;
f[j]=min(f[j],f[j-x]+1);
}
}
for(int i=1;i<=2000000;i++)
{
if(f[i]==114514)
{
printf("%d\n ",i-1);
return 0;
}
}
return 0;
}