问题
        有 n 种物品,其中第 i 种物品的体积为v[i],价值为w[i],并且有c[i]个,
        有一个容积为 m 的背包,选若干个物品装入背包,求解将哪些物品装入背包
        可使这些物品的总体 积不超过背包容量,且价值总和最大。

    时间复杂度
           n
        O( ∑ log( c[i] ) * m )
           i = 1
    思路
        把每种物品用二进制拆分成独立的几个物品再转化成01背包

    code 

        for( int i = 1; i <= n; i++ ) 
        {
            int num = min( c[i], m / v[i] );
            for( int k = 1; num > 0; k <<= 1 ) 
            {
                if( k > num ) 
                    k = num;
                num -= k;
                for( int j = m; j >= v[i] * k; j-- )
                    f[j] = max( f[j], f[j - v[i] * k] + w[i] * k );//都要*k
            }
        }