这两种写法效果不一样吗?
查看原帖
这两种写法效果不一样吗?
300098
cmaths楼主2021/10/3 11:35

4040 ptspts Code:Code:

#include <cstdio>

long long dp[1010];
int main()
{
    int n, x, loseW, winW, c;
    scanf("%d %d", &n, &x);
    for(int i = 1; i <= n; i++)
    {
        scanf("%d %d %d", &loseW, &winW, &c);
        for(int j = x; j >= 0; j--)
        {
            dp[j] += loseW;//不管怎样,打输肯定赚
            if((j >= c) && (dp[j - c] + winW > dp[j]))//如果可以打赢
                dp[j] = dp[j - c] + winW;//看是否赚         
        }
    }
    printf("%lld", dp[x] * 5);
    return 0;
}

ACAC Code:Code:

#include <cstdio>
#include <algorithm>

long long dp[1010];
int main()
{
    int n, x, loseW, winW, c;
    scanf("%d %d", &n, &x);
    for(int i = 1; i <= n; i++)
    {
        scanf("%d %d %d", &loseW, &winW, &c);
        for(int j = x; j >= c; j--)
            dp[j] = std::max(dp[j - c] + winW, dp[j] + loseW);//看打赢赚还是打输赚
        for(int j = c - 1; j >= 0; j--)
            dp[j] += loseW;//一定打输
    }
    printf("%lld", dp[x] * 5);
    return 0;
}

都能过样例,不知道为什么分不一样

2021/10/3 11:35
加载中...