01背包问题。将数组划分为两部分,要求两部分的和的之差绝对值最小。 #include <bits/stdc++.h> using namespace std; int dp[210000]; int n,arr[51]; int main() { int n; scanf("%d",&n); int sum = 0; for(int i = 0 ; i < n ; i ++){ scanf("%d",&arr[i]); arr[i] /= 1024; sum += arr[i]; } for(int i = 0 ; i < n ; i ++) for(int j = sum/2 ; j >= arr[i] ; --j) dp[j] = max(dp[j],dp[j-arr[i]]+arr[i]); printf("%d\n",(sum-dp[sum/2])*1024); return 0; } /* 5 3072 3072 7168 3072 1024 */
点赞 1

相关推荐

稚名不带撇:感觉学院本就已经废了,不是能不能进公司的问题了,是根本就没有啥面试,boss沟通了一千多,回我消息的才89,面试的才二十几个,但基本上都是小公司点击就送,唯一一次有1000+的公司面试,面的很好全回答出来了,项目这块个人感觉也说的不错,甚至面试官最后还直接给我介绍公司业务和看公司系统这些,介绍的也比较详细,说了40分钟到一个小时左右,说怕给我offer我不喜欢这种模式啥啥啥的,鼠鼠以为应该稳了,但是最后还是挂了,我问我们老师他说这种情况大概率是学历比你高的出现了,虽然可能问题没有全回答出来,但是学历把你爆了
秋招,不懂就问
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务