蒟蒻全wa,但是本地随便测了几组数据又没问题,求解
查看原帖
蒟蒻全wa,但是本地随便测了几组数据又没问题,求解
436727
COD002楼主2021/10/17 21:12
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int arr1[23],arr2[23],arr3[23],arr4[23];
int dp1[100],dp2[100],dp3[100],dp4[100];
int time(int sum,int* piont,int num,int* dp){
    for(int i=1;i<=num;i++){
        for(int j=sum;j>=piont[i];j--) {
            dp[j] = max(dp[j], dp[j - piont[i]] + piont[i]);
        }
    }
    return dp[sum];
}

int main() {
    int a1=0,a2=0,a3=0,a4=0,sum1=0,sum2=0,sum3=0,sum4=0;
    int sum_time=0;
    scanf("%d%d%d%d",&a1,&a2,&a3,&a4);
    for(int i=1;i<=a1;i++){
        scanf("%d",arr1+i);
        sum1+=arr1[i];
    }
    for(int i=1;i<=a2;i++){
        scanf("%d",arr2+i);
        sum2+=arr2[i];
    }
    for(int i=1;i<=a3;i++){
        scanf("%d",arr3+i);
        sum3+=arr3[i];
    }
    for(int i=1;i<=a4;i++){
        scanf("%d",arr4+i);
        sum4+=arr4[i];
    }
   int t1=time(sum1/2,arr1,a1,dp1);
    int t2=time(sum2/2,arr2,a2,dp2);
    int t3=time(sum3/2,arr3,a3,dp3);
    int t4=time(sum4/2,arr4,a4,dp4);

    sum_time=(sum1+sum2+sum3+sum4)-(t1+t2+t3+t4);
    cout<<sum_time;
    return 0;
}

用的是01背包,让每个科目的时间接近单科目的1/2总时间,求大牛帮忙看一看

2021/10/17 21:12
加载中...