蓝桥杯每日真题之砝码称重(01背包)
题面来源
2021年蓝桥省赛第一场G题
题面连接:http://acm.mangata.ltd/p/P1482
考点
01背包,动态规划
视频讲解
https://www.bilibili.com/video/BV1bY4y1s7J3/
思路
我们定义 f[i][j]f[i][j]f[i][j] 表示的是前 iii 个物品中是否能称出重量为 jjj 的砝码,由于天平是两边都能添加砝码的,于是我们对于右边的来说如果右边的重量大于左边的,我们记为正,反之我们记为负,于是我们对于每一个砝码可以放在左边(权值为负),也可以放在右边(权值为正),也可以不放,那么我们不难得到状态转移:
f[i][j]=f[i−1][j]∣∣f[i−1][j−a[i]]∣∣f[i−1][j+a[i]]f[i][j] = f[i-1][j] \ || \ f[i-1][j-a[i]] \ || \ f[i-1][j + a[i]]f[i][j]=f[i−1][j] ∣∣ f[i−1][j−a[i]] ∣∣ f[i−1][j+a[i]]
中间是 或 起来的,因为我们能从这三个状态转移过来,注意的是由于 j−a[i]j-a[i]j−a[i] 是可能会得到负数的,那么对于负数的情况我们其实得到的重量就是他的绝对值,于是我们给它加上绝对值
f[i][j]=f[i−1][j]∣∣f[i−1][abs(j−a[i])]∣∣f[i−1][j+a[i]]f[i][j] = f[i-1][j] \ || \ f[i-1][abs(j-a[i])] \ || \ f[i-1][j + a[i]]f[i][j]=f[i−1][j] ∣∣ f[i−1][abs(j−a[i])] ∣∣ f[i−1][j+a[i]]
代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mod 1000000007
#define endl "\n"
#define PII pair<int,int>
#define INF 0x3f3f3f3fconst int N = 1e2+10,M = 1e5+10;int n,a[N],f[N][M];int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n;int m = 0;for(int i = 1;i <= n; ++i) cin>>a[i],m += a[i];f[0][0] = 1;for(int i = 1;i <= n; ++i)for(int j = m;j >= 0; --j)f[i][j] = f[i-1][j] || f[i-1][abs(j-a[i])] ||f[i-1][j + a[i]];int ans = 0;for(int i = 1;i <= m; ++i)if(f[n][i]) ans++;cout<<ans<<endl;return 0;
}
蓝桥杯每日真题之砝码称重(01背包)相关推荐
- 蓝桥杯每日真题之直线
题目来源 2021年蓝桥杯省赛 题目链接:http://acm.mangata.ltd/p/P1485 考点 数学.暴力 视频讲解 https://www.bilibili.com/video/BV1 ...
- 蓝桥杯每日真题之货物摆放
题目来源 2021年蓝桥杯省赛 题目链接:https://www.lanqiao.cn/problems/1463/learning/ 考点 数论.暴力 视频讲解 https://www.bilibi ...
- 第十二届蓝桥杯省赛A组砝码称重Java解题思路及代码
[问题描述] 你有一架天平和 N个砝码,这N个砝码重量依次是W1, W2, -, Wn. 请你计算一共可以称出多少种不同的重量?注意砝码可以放在天平两边. [输入格式] 输入的第一行包含一个整数N. ...
- 第十四届蓝桥杯三月真题刷题训练——第 10 天
目录 第 1 题:裁纸刀 问题描述 运行限制 代码: 第 2 题:刷题统计 问题描述 输入格式 输出格式 样例输入 样例输出 评测用例规模与约定 运行限制 代码: 第 3 题:修建灌木 问题描述 输入 ...
- 第十四届蓝桥杯三月真题刷题训练——第 8 天
目录 第 1 题:分数 题目描述 运行限制 代码: 第 2 题:回文日期 题目描述 输入描述 输出描述 输入输出样例 运行限制 代码: 第 3 题:迷宫 代码: 第 1 题:分数 题目描述 本题为填空 ...
- 蓝桥杯历年真题,来,看看
.标题: 世纪末的星期 曾有邪教称1999年12月31日是世界末日.当然该谣言已经不攻自破. 还有人称今后的某个世纪末的12月31日,如果是星期一则会.... 有趣的是,任何一个世纪末的年份的12月3 ...
- 【C语言蓝桥杯每日一题】—— 单词分析
[C语言蓝桥杯每日一题]-- 单词分析
- 数苹果-第11届蓝桥杯Scratch真题
数苹果,第11届蓝桥杯Scratch编程创作题,出现在2020年8月STEMA考试中.涉及到的知识点有坐标.随机数.问答.广播事件.变量和克隆等. 编程实现 数苹果:苹果树上会随机出现1-10个苹果, ...
- 【C语言蓝桥杯每日一题】——跑步锻炼
[C语言蓝桥杯每日一题]-- 跑步锻炼
最新文章
- Cache总义Cache用法之页面声明
- 简述Core Location定位功能
- 字符串操作之字符串连接
- opengl三维图形图形颜色_【图形学基础】基本概念
- linux那些事之中断与异常(AMD64架构)_2
- linux根据进程的运行路径,停止进程
- django-admin
- Oracle Data Guard (RAC+DG) 归档删除策略及脚本
- 查看各浏览器各版本的兼容情况
- js中的同步与异步的理解
- Linux(ubuntu)系统键盘指法打字练习软件汇总
- 截图转文字怎么操作?截图转文字的软件有哪些?
- 计网 - TCP 的稳定性:滑动窗口和流速控制是怎么回事?
- Google可能退出中国市场
- paypal java_PaypalUtil PayPal付款JAVA工具类
- c4d流体插件_C4D流体烟雾模拟插件TurbulenceFD C4D v1.0.1437支持R14R20
- CTF 你就是长不了
- 软件测试时如何检测内存,如何进行内存检测?内存检测的功能使用方法介绍
- 再次爬取干货集中营的福利图片
- 微信聊天记录删了怎么恢复找回来2022 微信聊天记录删了怎么恢复找回来步骤