PKU 1742 -- Coins - xIao_wU 思维磁场 - Just Run And Never Forget I Have A Dream
PKU 1742 -- Coins
xIao.wU
posted @ 2010年2月05日 08:42
in 动态规划
, 1408 阅读
楼教主的题,没想到,然后扒了一大堆资料,感觉都不是啥好东西,关于剩余类到是没细看 - -~ 没耐心,然后发现与其说这题是01背包或者多重背包,不如说是完全背包的活用,其实给完全背包加一个限制条件,就可以了,好题啊好题。
CODE:
#include <iostream> using namespace std; const int N = 100001; int n , m , f[N] , T[N]; int A[101] , C[101]; int main() { //freopen("in.txt" , "r" , stdin); while(scanf("%d %d", &n, &m) != EOF) { if(n == 0 && m == 0) break; memset(f , 0 , sizeof(f)); for(int i=0; i < n; i++) scanf("%d", &A[i]); for(int i=0; i < n; i++) scanf("%d", &C[i]); f[0] = 1; for(int i=0; i < n; i++) { for(int j=1; j <= m; j++) T[j] = 0; for(int j=A[i]; j <= m; j++) { if(!f[j] && f[j - A[i]] && T[j - A[i]] < C[i]) { T[j] = T[j - A[i]] + 1; f[j] = 1; } } } int ret = 0; for(int i=1; i <= m; i++) if(f[i]) ret ++; printf("%d\n" , ret); } return 0; }