1. 程式人生 > 其它 >洛谷P2725 [USACO3.1]郵票 Stamps 題解

洛谷P2725 [USACO3.1]郵票 Stamps 題解

技術標籤:python演算法動態規劃c++leetcode

[USACO3.1]郵票 Stamps

description:

一共有

n 種面值為 a_i 的郵票,最多可以使用 k 個。問能表示出的最大面值的整數。

solution:

完全揹包即可。

觀察到其實最大隻能表示到

2e6 ,所以最後從小到大列舉,找到第一個無法表示的位置就行。

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; }