CSL分苹果 题解

CSL分苹果

https://ac.nowcoder.com/acm/problem/17871

将问题转化为wavator拿的苹果质量尽可能多,则变成一个容量为sum>>1的背包问题。
由于题目要求的是质量尽可能多,那么w[i]等价于v[i]
套用01背包模板,注意dp数组的大小至少要开到sum>>1

#include <bits/stdc++.h>
using namespace std;
int a[5050];
int dp[5050];//维护当前到第几个数,差值
int main()
{
    int sum=0;
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
        sum+=a[i];
    }
    int m=sum>>1;
    for(int i=1;i<=n;i++)
    {
        for(int j=m;j>=a[i];j--)
        {
            dp[j]=max(dp[j],dp[j-a[i]]+a[i]);
        }
    }
    printf("%d %d\n",dp[m],sum-dp[m]);
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-10 14:00
林子大了什么鸟都有啊,我觉得我说的已经很客气了,阴阳谁呢
牛客62656195...:应该不是阴阳吧?你第一次注册的时候boss就说你是牛人
点赞 评论 收藏
分享
05-27 14:57
西北大学 golang
强大的社畜在走神:27届真不用急,可以搞点项目、竞赛再沉淀沉淀,我大二的时候还在天天打游戏呢
投递华为等公司10个岗位
点赞 评论 收藏
分享
认真搞学习:这么良心的老板真少见
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-08 13:15
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务