题目链接

题目

题目描述

终于Alice走出了大魔王的陷阱,可是现在傻傻的她忘了带武器了,这可如何是好???这个时候,一个神秘老人走到她面前答应无偿给她武器,但老人有个条件,需要将所选武器分别放在天平的两端,若天平平衡则可以将天平上的所有武器拿走,还好这个天平锈迹斑斑,只要两端重量相差小于等于m就会保持平衡,Alice傻傻的认为越重的武器越好,求Alice最多能拿走的武器总重量。(不限操作次数)

输入描述

第一行2个整数 n, m;

第二行n个整数x,分别表示n件武器的重量。

1 <= n <= 100; 0 <= m <= 100; 1 <= x <= 100;

输出描述

一个整数,表示Alice最多能拿走的武器总重量。

示例1

输入

5 4
1 5 61 65 100

输出

132

说明

可以称两次,第1次:(1 ; 5),第二次(61 ; 65)。

示例2

输入

5 0
10 20 30 40 100

输出

200

说明

称一次,(10,20,30,40 ; 100)。

题解

知识点:背包dp。

01背包变种。设 \(dp[i][j]\) 为考虑了 \(i\) 个物品天平两遍差的绝对值为 \(j\) 的最大值。因为天平左右两边可以随时互换,我们只考虑绝对值即可。转移方程为:

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

注意边界,而且 \(j\) 的范围应该是 \([0,\sum w_i]\) ,而不是 \([0,m]\) ,因为可以放天平另一端平衡。

最后找到 \(dp[n][0\cdots m]\) 的最大值即可。

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

空间复杂度 \(O(n\sum w_i)\)

代码

#include <bits/stdc++.h>

using namespace std;

int dp[107][10007], w[107];

int main() {
std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int n, m, sum = 0;
cin >> n >> m;
for (int i = 1;i <= n;i++) cin >> w[i], sum += w[i];
memset(dp, -0x3f, sizeof(dp));///必须负无穷,不能填空气,因为可能导致所有物品都能放
dp[0][0] = 0;
for (int i = 1;i <= n;i++) {
for (int j = 0;j <= sum;j++) { ///不能到m就结束,因为可能从后面传递
dp[i][j] = dp[i - 1][j];
if (j + w[i] <= sum) dp[i][j] = max(dp[i][j], dp[i - 1][j + w[i]] + w[i]);
if (abs(j - w[i]) <= sum) dp[i][j] = max(dp[i][j], dp[i - 1][abs(j - w[i])] + w[i]);
}
}
int ans = 0;
for (int i = 0;i <= m;i++) ans = max(ans, dp[n][i]);
cout << ans << '\n';
return 0;
}

NC19158 失衡天平的更多相关文章

  1. 【Wannafly挑战赛24】【C失衡天平】

    https://www.nowcoder.com/acm/contest/186/C 题意:有n个武器,每个武器都有一个重量 Wi,有一个天平,只要两端的重量差不大于m就能达到平衡,求在天平平衡的情况 ...

  2. 失衡天平 - 简单dp

    链接:https://www.nowcoder.com/acm/contest/186/C来源:牛客网 终于Alice走出了大魔王的陷阱,可是现在傻傻的她忘了带武器了,这可如何是好???这个时候,一个 ...

  3. Nowcoder186C 失衡天平 背包

    题目传送门 题意:给你$N$个数,你可以将其划分为若干对集合(这里所说的集合允许数字重复)(即集合是两个集合两个集合出现),每对集合中两个集合所有元素的和的差的绝对值不超过$M$,可以有数字不在集合内 ...

  4. Wannafly挑战赛24游记

    Wannafly挑战赛24游记 A - 石子游戏 题目大意: A和B两人玩游戏,总共有\(n(n\le10^4)\)堆石子,轮流进行一些操作,不能进行下去的人则输掉这局游戏.操作包含以下两种: 把石子 ...

  5. Wannafly挑战赛24

    A. 石子游戏 Alice和Bob在玩游戏,他们面前有n堆石子,对于这些石子他们可以轮流进行一些操作,不能进行下去的人则输掉这局游戏.可以进行两种操作:1. 把石子数为奇数的一堆石子分为两堆正整数个石 ...

  6. UVa 12166 修改天平

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  7. BZOJ 1111: [POI2007]四进制的天平Wag

    1111: [POI2007]四进制的天平Wag Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 223  Solved: 151[Submit][St ...

  8. UVa 1354 Mobile Computing | GOJ 1320 不加修饰的天平问题 (例题 7-7)

    传送门1(UVa): https://uva.onlinejudge.org/external/13/1354.pdf 传送门2(GOJ): http://acm.gdufe.edu.cn/Probl ...

  9. 二叉树的递归遍历 天平UVa839

    题意:输入一个树状的天平,利用杠杆原理,根据力矩是否相等(W1D1==W1D2)判断天平是否平衡 解题思路:1.由于判断天平是否平衡,当W1和W2都为0的时候,会先输入左子树,再输入右子树 2.此时的 ...

  10. bzoj:1673 [Usaco2005 Dec]Scales 天平

    Description Farmer John has a balance for weighing the cows. He also has a set of N (1 <= N <= ...

随机推荐

  1. Oracle表结构&数据类型&约束

    1.Oracle 表结构 1.1.创建表名的规范 推荐以"t_xxx" 不能含有"+- "等非法字符,eg:sql create table "t-1 ...

  2. [转帖]设置CMD默认代码页为65001或936

    https://www.cnblogs.com/songzhenhua/p/9312769.html 之前不知道怎么改的,CMD的代码页被默认设置成了65001   但我右击CMD标题,选择'默认值' ...

  3. [转帖]技术分享 | MySQL:一文弄懂时区&time_zone

    https://opensource.actionsky.com/20211214-time_zone/   作者:胡呈清 爱可生 DBA 团队成员,擅长故障分析.性能优化,个人博客:https:// ...

  4. TiDB的搭建与维护过程

    TiDB的搭建与维护过程 背景 总结一下TiDB的搭建以及简单维护过程. 目标: 简单快速的创建TiDB数据库,以及进行备份恢复等工作. TiDB 简介 TiDB(全称:Ti Distributed ...

  5. [转帖]OpenSSL版本历史

    OpenSSL版本历史 新闻日志 这是所有 OpenSSL 公告的简洁日志.它们几乎是发布通知. 日期物品 2021 年 7 月 29 日OpenSSL 3.0 的 Beta 2 现已推出.这是一个候 ...

  6. [转帖]文件操作之zip、bzip2、gzip、tar命令

    文件操作之zip.bzip2.gzip.tar命令 原创 丁同学19902015-10-15 00:02:51博主文章分类:liunx基础著作权 文章标签linux tarlinux文件压缩linux ...

  7. [转帖]alertmanager的使用

    https://www.jianshu.com/p/654d59325550 一.Alertanager的安装 1.下载   下载altermanager 2.安装 # 不同的平台下载不同的安装包 w ...

  8. 【JS 逆向百例】网洛者反爬练习平台第四题:JSFuck 加密

    关注微信公众号:K哥爬虫,持续分享爬虫进阶.JS/安卓逆向等技术干货! 声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后 ...

  9. LINUX安装和配置

    本篇文章为本人从零开始学习linux的学习心得,其中包含了 部署虚拟环境安装linux系统 .其中若有错误之处,请读者积极指出,让本人与读者共同进步. 第一章 部署虚拟环境安装linux系统及配置网路 ...

  10. Qt "有效且启用的储存库"问题

    传送门 : https://www.cnblogs.com/SaveDictator/p/8532664.html 看就完了, 反正我好了 https://mirrors.tuna.tsinghua. ...