1 条题解

  • 0
    @ 2025-8-24 21:25:40

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar vegetabird
    **

    搬运于2025-08-24 21:25:39,当前版本为作者最后更新于2017-08-15 17:03:29,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    #为什么没有人写暴力?

    直接暴力二维背包出xx个人yy点血是否可行,

    然后在有n2\frac{n}{2}人且可行的方案中暴力选出最符合题意的血量。

    CODE:

    #include<cstdio>
    #include<cctype>
    #include<cstring>
    #include<utility>
    #include<algorithm>
    #include<vector>
    #include<queue>
    #include<cmath>
    #include<set>
    using namespace std;
    int n;
    int a[210],f[8010][110];
    int main(){
        register int i,j,k,sum=0,ans=0x3fffffff;
        scanf("%d",&n);
        f[0][0]=1;
        for(i=1;i<=n;i++){
            scanf("%d",a+i);
            for(j=5000;j>=a[i];j--){
                for(k=100;k>=1;k--){
                    f[j][k]=max(f[j][k],f[j-a[i]][k-1]);
                }
            }
            sum+=a[i];
        }
        for(i=0;i<=5000;i++){
            if(f[i][n/2]){
                if(ans>abs(i*2-sum)){
                    ans=abs(i*2-sum);
                }
            }
        }
        printf("%d %d\n",(sum-ans)/2,(sum+ans)/2);
    }
    
    • 1

    信息

    ID
    482
    时间
    1000ms
    内存
    512MiB
    难度
    4
    标签
    递交数
    0
    已通过
    0
    上传者