poj-1014 - 다중 가방+이진 최적화

1419 단어
제목: 각각 1,2,3,4,5,6의 가치가 있는 6가지 물품에 6개의 숫자를 입력하여 해당 가치를 표시하는 물품의 수량을 묻는다. 물품을 2개로 나눌 수 있는지 물어보자. 2개의 총 가치가 같다. 그 중 1개의 물품은 절개할 수 없고 그 중 어느 한 쪽만 나눌 수 있다. 6개의 0을 입력하면 (즉 물품이 없다) 이 절차가 끝나 총 물품의 수량은 20000을 넘지 않는다.
방법:
다중 가방+바이너리 최적화.
참고:
1, dp를 -1로 초기화하고 dp[0]=0을 주의한다.
2. 각 변수가 대표하는 의미를 잘 정리해야 한다.
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define INT_MAX 0x7fffffff
#define INF 999999
#define max3(a,b,c) (max(a,b)>c?max(a,b):c)
#define min3(a,b,c) (min(a,b)=weight;v--)
    {
        dp[v]=max(dp[v],dp[v-weight]+cost);
        if(dp[v]==s/2)
        {
            leap=1;
            return ;
        }
    }
}
void mul(int cost,int num)
{
    if(cost*num>s/2)
    {
        num=(s/2)/cost;
    }
    int k=1;
    while(k

좋은 웹페이지 즐겨찾기