邮票(完全背包)

wjyyy

2018-05-03 20:43:43

Personal

[邮票 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; } ```