邮票(完全背包)
wjyyy
2018-05-03 20:43:43
[邮票 stamp](https://www.luogu.org/problemnew/show/P2725)
题目有$k\le200$个位置,$m\le50$种面值,面值最大小于$10000$ 如果像完全背包那么枚举,$N^3$,肯定是T了(为什么我还WA了qwq。。。),再一个就是数组要开到maxm*k。完全背包优化方式之一见[飞扬的小鸟](https://www.luogu.org/problemnew/show/P1941)
在这里的枚举方式是先枚举点,然后枚举可以转移到它的点,将$f[j-a[i]]+1$与$f[j]$比较。就只用枚举点和面值了。
```cpp
while(f[i]<=n)
{
i++;
for(int j=1;j<=m;j++)
if(i-a[j]>=0)
f[i]=f[i]<f[i-a[j]]+1?f[i]:f[i-a[j]]+1;
}
```