hiho Week 6 register

Ended

Participants:538

Verdict:Accepted
Score:100 / 100
Submitted:2014-08-09 20:39:04

Lang:G++

Edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <cstdio>
#include <cstring>
#define max(a, b) b - ( (b-a) & ( (b-a) >> 31) )
int n, m, c[501], w[501], dp[100001], ans, sumc = 0;
void geti(int &x)
{
    int num = 0;
    char c = getchar();
    while (c<'0' || c>'9')
        c = getchar();
    for (; c>='0'&&c<='9'; c = getchar())
        num = num * 10 + c - '0';
    x = num;
}
void read()
{
    geti(n); geti(m);
    for (int i=0; i<n; i++)
       geti(c[i]), geti(w[i]), sumc+=c[i];
}
void knapsack01_contant_optimize()
{
    int limit, res=m-sumc;
    for (int i=0; i<n; i++)
    {
        limit=max(res, c[i]);
        for (int j=m; j>=limit; j--)
            if (dp[j-c[i]]+w[i]>dp[j])
                dp[j]=dp[j-c[i]]+w[i];
        res+=c[i];
    }
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX