题面来源

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背包)相关推荐

  1. 蓝桥杯每日真题之直线

    题目来源 2021年蓝桥杯省赛 题目链接:http://acm.mangata.ltd/p/P1485 考点 数学.暴力 视频讲解 https://www.bilibili.com/video/BV1 ...

  2. 蓝桥杯每日真题之货物摆放

    题目来源 2021年蓝桥杯省赛 题目链接:https://www.lanqiao.cn/problems/1463/learning/ 考点 数论.暴力 视频讲解 https://www.bilibi ...

  3. 第十二届蓝桥杯省赛A组砝码称重Java解题思路及代码

    [问题描述] 你有一架天平和 N个砝码,这N个砝码重量依次是W1, W2, -, Wn. 请你计算一共可以称出多少种不同的重量?注意砝码可以放在天平两边. [输入格式] 输入的第一行包含一个整数N. ...

  4. 第十四届蓝桥杯三月真题刷题训练——第 10 天

    目录 第 1 题:裁纸刀 问题描述 运行限制 代码: 第 2 题:刷题统计 问题描述 输入格式 输出格式 样例输入 样例输出 评测用例规模与约定 运行限制 代码: 第 3 题:修建灌木 问题描述 输入 ...

  5. 第十四届蓝桥杯三月真题刷题训练——第 8 天

    目录 第 1 题:分数 题目描述 运行限制 代码: 第 2 题:回文日期 题目描述 输入描述 输出描述 输入输出样例 运行限制 代码: 第 3 题:迷宫 代码: 第 1 题:分数 题目描述 本题为填空 ...

  6. 蓝桥杯历年真题,来,看看

    .标题: 世纪末的星期 曾有邪教称1999年12月31日是世界末日.当然该谣言已经不攻自破. 还有人称今后的某个世纪末的12月31日,如果是星期一则会.... 有趣的是,任何一个世纪末的年份的12月3 ...

  7. 【C语言蓝桥杯每日一题】—— 单词分析

    [C语言蓝桥杯每日一题]-- 单词分析

  8. 数苹果-第11届蓝桥杯Scratch真题

    数苹果,第11届蓝桥杯Scratch编程创作题,出现在2020年8月STEMA考试中.涉及到的知识点有坐标.随机数.问答.广播事件.变量和克隆等. 编程实现 数苹果:苹果树上会随机出现1-10个苹果, ...

  9. 【C语言蓝桥杯每日一题】——跑步锻炼

    [C语言蓝桥杯每日一题]-- 跑步锻炼

最新文章

  1. Cache总义Cache用法之页面声明
  2. 简述Core Location定位功能
  3. 字符串操作之字符串连接
  4. opengl三维图形图形颜色_【图形学基础】基本概念
  5. linux那些事之中断与异常(AMD64架构)_2
  6. linux根据进程的运行路径,停止进程
  7. django-admin
  8. Oracle Data Guard (RAC+DG) 归档删除策略及脚本
  9. 查看各浏览器各版本的兼容情况
  10. js中的同步与异步的理解
  11. Linux(ubuntu)系统键盘指法打字练习软件汇总
  12. 截图转文字怎么操作?截图转文字的软件有哪些?
  13. 计网 - TCP 的稳定性:滑动窗口和流速控制是怎么回事?
  14. Google可能退出中国市场
  15. paypal java_PaypalUtil PayPal付款JAVA工具类
  16. c4d流体插件_C4D流体烟雾模拟插件TurbulenceFD C4D v1.0.1437支持R14R20
  17. CTF 你就是长不了
  18. 软件测试时如何检测内存,如何进行内存检测?内存检测的功能使用方法介绍
  19. 再次爬取干货集中营的福利图片
  20. 微信聊天记录删了怎么恢复找回来2022 微信聊天记录删了怎么恢复找回来步骤

热门文章

  1. Matlab之数据的输入与输出
  2. latex Label ‘ ‘ multiply defined
  3. 【SSL Certificates】什么是数字证书(Certificates)?
  4. python 生成嵌套字典
  5. vim的几个常用操作
  6. gradle相关配置内容解析
  7. HTML的语义化和一些简单优化
  8. Django 进阶篇之 CSRF,COOIKE,SESSION
  9. Servlet学习-MVC开发模式
  10. Lesson 1- exchange 2010 installing