题目链接

题目

题目描述

CSL手上有n个苹果,第i个苹果的质量是wi,现在他想把这些苹果分给他的好朋友wavator和tokitsukaze。但是CSL为了不让他们打架,根据质量决定尽量地均分成两堆分给他们。现在CSL想知道到底给每个人分多少质量的苹果。

注意:苹果不能劈开来,并且如果不能正好均分,tokitsukaze小姐姐会拿到重的那一堆。

输入描述

第一行输入一个整数 \(n(2 ≤ n ≤ 100)\) ,第二行n个整数,表示每个苹果的质量 \(w_i(1 ≤ w_i ≤ 100)\) 。

输出描述

输出两个整数,分别表示wavator和tokitsukaze得到的苹果的质量。

示例1

输入

3
2 2 2

输出

2 4

题解

知识点:背包dp。

01背包的变种。体积即是限制,也是贡献。因此设 \(dp[i][j]\) 为考虑了 \(i\) 个物品体积不超过 \(j\) 的最大体积。

为了使得体积最接**分,设限制为 \(\lfloor \frac{sum}{2} \rfloor\) ,因为是取下整所以结果是小的那部分。转移方程为:

\[dp[i][j] = \max(dp[i-1][j],dp[i-1][j-w[i]]+w[i])
\]

最后 \(dp[\lfloor \frac{sum}{2} \rfloor]\) 就是最接*的情况少的那部分结果。

时间复杂度 \(O(n\sum w)\)

空间复杂度 \(O(n+\sum w)\)

代码

#include <bits/stdc++.h>

using namespace std;

int dp[10007], w[107];

int main() {
std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int n, sum = 0;
cin >> n;
for (int i = 1;i <= n;i++) cin >> w[i], sum += w[i];
for (int i = 1;i <= n;i++)
for (int j = sum >> 1;j >= w[i];j--)
dp[j] = max(dp[j], dp[j - w[i]] + w[i]);
cout << dp[sum >> 1] << ' ' << sum - dp[sum >> 1] << '\n';
return 0;
}

NC17871 CSL分苹果的更多相关文章

  1. COJN 0583 800602分苹果

    800602分苹果 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放, ...

  2. C语言 · 分苹果

    算法提高 分苹果   时间限制:1.0s   内存限制:256.0MB      问题描述 小朋友排成一排,老师给他们分苹果. 小朋友从左到右标号1..N.有M个老师,每次第i个老师会给第Li个到第R ...

  3. 蓝桥杯 算法训练 ALGO-121 猴子分苹果

      算法训练 猴子分苹果   时间限制:1.0s   内存限制:256.0MB 问题描述 秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分.这些猴子很崇拜猴王孙悟空,所以都想给他留一些苹果 ...

  4. nyoj_758_分苹果

    分苹果 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法? (注意:假如有3个盘子7 ...

  5. Java实现 蓝桥杯VIP 算法训练 猴子分苹果

    问题描述 秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分.这些猴子很崇拜猴王孙悟空,所以都想给他留一些苹果.第一只猴子悄悄来到山洞,把苹果平均分成n份,把剩下的m个苹果吃了,然后藏起来一 ...

  6. Java实现 蓝桥杯VIP 算法提高 分苹果

    算法提高 分苹果 时间限制:1.0s 内存限制:256.0MB 问题描述 小朋友排成一排,老师给他们分苹果. 小朋友从左到右标号1-N.有M个老师,每次第i个老师会给第Li个到第Ri个,一共Ri-Li ...

  7. JAVA 用分苹果来理解本题

    思路 其实这是一道非常经典的分苹果问题:有m个一样的苹果和n个一样的盘子,把苹果放盘子里,每个盘子允许0-m个苹果,求问有多少种分法? 与本题的共通之点在于,输入的正整数可以看成m个苹果,拆分出的加数 ...

  8. ALGO-121_蓝桥杯_算法训练_猴子分苹果

    问题描述 秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分.这些猴子很崇拜猴王孙悟空,所以都想给他留一些苹果.第一只猴子悄悄来到山洞,把苹果平均分成n份,把剩下的m个苹果吃了,然后藏起来一 ...

  9. POJ 1644 分苹果 (递归解法)

    把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. Input 第一行是测试数据的数目t(0 <= t < ...

  10. HLG2081分苹果

    苹果 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 39(24 users) Total Accepted: 29(22 users) ...

随机推荐

  1. Java 有效字符串判断

    转载请注明出处: 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. ...

  2. spring boot 中默认最大线程连接数,线程池数配置查看

    本文为博主原创,转载请注明出处: 可以查看 AbstractEndpoint  源码中的常量的定义: public abstract class AbstractEndpoint<S, U> ...

  3. 4.Prometheus之存储及WAL

    一.整体介绍 二.block 2.1 head block 三.WAL(Write-ahead logging, 预写日志) 3.1 数据流向 四.和存储相关的启动参数 五.总结 一.整体介绍 Pro ...

  4. SV 字符串类型

    概述 常见使用方式 string b; string b=""; // 拼接字符串 string a = {"hi",b}; // 将字符串a赋值给[15:0] ...

  5. 小技巧:WIndows快速创建文件夹

    快速创建文件夹的技巧 1.首先创建文本文档将扩展名更改为.bt,mkdir.bat 2.写入创建文件夹的代码 md 文件夹1 文件夹2 文件夹3 pause 3.双击执行mkdir.bat

  6. 问题--flask无法发邮件,无法登录

    1.问题 早上测试项目的时候,一直无法正确发送邮件,无法接收,但是查不出原因是什么 2.解决 改变了一下思路,去登录了不需要邮件验证码的用户,发现错误 这个错误提示是一个数据库连接错误,表明应用程序无 ...

  7. MPC 是下一代私钥安全的7大原因

    PrimiHub一款由密码学专家团队打造的开源隐私计算平台,专注于分享数据安全.密码学.联邦学习.同态加密等隐私计算领域的技术和内容. 多重签名钱包与单一密钥钱包相比,因其提升了资产安全性,如今已成为 ...

  8. 2023年江苏“领航杯”MISC一个很有意思的题目(别把鸡蛋放在同一个篮子里面)

    别把鸡蛋放在同一个篮子里面 题目附件:https://wwzl.lanzoue.com/i6HmX16finnc 1.题目信息 解压压缩包打开附件,获得5141个txt文档,每个文档都有内容,发现是b ...

  9. MyBatis04——使用注解开发

    使用注解开发 MyBatis3提供了新的基于注解的配置,但是MyBatis映射并不能用注解来构建. sql类型主要分成: @select @update @insert @delete 注意:利用注解 ...

  10. 海思Hi35xx uboot启动分析总结

    前言 在嵌入式linux设备中,uboot的最终目的就是启动kernel.对于uboot而言,没有人把它引导起来,所以uboot首先需要把自己加载起来,然后再去引导kernel的启动,这也就可以大致的 ...