你有一架天平和 NN 个砝码,这 NN 个砝码重量依次是 W1,W2,⋅⋅⋅,WNW1,W2,···,WN。

请你计算一共可以称出多少种不同的正整数重量?

注意砝码可以放在天平两边。

输入格式

输入的第一行包含一个整数 NN。

第二行包含 NN 个整数:W1,W2,W3,⋅⋅⋅,WNW1,W2,W3,···,WN。

输出格式

输出一个整数代表答案。

数据范围

对于 50%50% 的评测用例,1≤N≤151≤N≤15。
对于所有评测用例,1≤N≤1001≤N≤100,NN 个砝码总重不超过 105105。

输入样例:

3
1 4 6

输出样例:

10

样例解释

能称出的 1010 种重量是:1、2、3、4、5、6、7、9、10、111、2、3、4、5、6、7、9、10、11。

分析:该题可抽象成01背包问题

可对一个砝码进行分析:即不选 或 选 +w[i] 或 选 -w[i]

状态属性可用bool

最后计算出1 ~ sum 的true的个数即为答案

Source Code:

#include <algorithm>
#include <iostream>
#include <set>using namespace std;typedef long long LL;const int N = 110, M = 200010, B = M / 2; // 枚举从-sum 到 sum 所以设置一个偏移量int a[N];
bool f[N][M];int main()
{ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int n;LL sum = 0;cin >> n;for(int i = 1; i <= n; i++){cin >> a[i];sum += a[i];}f[0][B] = true;for(int i = 1; i <= n; i++){for(int j = -sum; j <= sum; j++){f[i][j + B] = f[i - 1][j + B];if(j - a[i] >= -sum)f[i][j + B] |= f[i - 1][j - a[i] + B];if(j + a[i] <= sum)f[i][j + B] |= f[i - 1][j + a[i] + B];}}int ans = 0;for(int i = 1; i <= sum; i++){if(f[n][i + B])ans++;}cout << ans << endl;return 0;
}

砝码称重 第十二届蓝桥杯B组相关推荐

  1. 2021第十二届蓝桥杯B组省赛C/C++做题过程与反思

    2021第十二届蓝桥杯B组省赛C/C++做题过程与反思 ​ 鄙人大一,第一次有幸参加蓝桥杯b组c.以下是本人的做题全过程,注意了!!!!不一定是正确答案!! 如果有误,还请大佬们指点指点. 试题 A: ...

  2. 第十二届蓝桥杯青少年组国赛C++中级组 第1题 -- 第3题(python3实现)

    12届蓝桥杯青少年组国赛C++中级组编程题 12届蓝桥杯青少年组国赛C++中级组编程题_lybc2019的博客-CSDN博客 蓝桥杯算法学习路线 | 全程制作过程公开 蓝桥杯算法学习路线 | 全程制作 ...

  3. 2021第十二届蓝桥杯Python组国赛/决赛 题解

    2021第十二届蓝桥杯Python组国赛/决赛 题解 前言 2021年第十二届蓝桥杯国赛/决赛,因为疫情原因没有像往年一样前往北京参赛,而是在自己学校的机房进行考试,形式上类似蓝桥杯省赛,但由于参加国 ...

  4. 2021年第十二届蓝桥杯A组省赛

    时隔9个月,终于想起补题了 编程题 A. 卡片(5分) 答案:3181 分析: 简单题,直接从1开始处理每一个数,直到出现某一种卡片不够为止. #include<bits/stdc++.h> ...

  5. 第十二届蓝桥杯A组省赛填空题Java思路及代码合集(相乘直线货物摆放路径回路计数)

    文章目录 试题 A: 相乘 试题 B: 直线 试题 C: 货物摆放 试题 D: 路径 试题 E: 回路计数 试题 A: 相乘 本题总分:5 分 [问题描述] 小蓝发现,他将 1 至 100000000 ...

  6. 第十二届蓝桥杯JavaB组省赛H题 杨辉三角形

    早上的比赛,忘记测试用例了. 计算输入数字N在杨辉三角形中出现的第一个位置 (把杨辉三角形平铺成一个数列) 我是构建了杨辉三角,用count记录添加次数,发现N时输出count (注意特判当N是1时输 ...

  7. 第十二届蓝桥杯A组省赛试题 I: 双向排序(Java)

    试题 I: 双向排序 本题总分:25 分 [问题描述] 给定序列 (a1, a2, · · · , an) = (1, 2, · · · , n),即 ai = i. 小蓝将对这个序列进行 m 次操作 ...

  8. 第十二届蓝桥杯JavaB组省赛H_杨辉三角形

    一.题目: 二.题目分析: 首先这个题是我们比较熟悉的杨辉三角,需要注意的就是评测用例的范围. 三.解法 . 题目给出20%的用例是1-10 所以可以直接 枚举出1-10的即可获得2分 . 下面我第一 ...

  9. 第十二届蓝桥杯B组E路径

    //迪杰斯特拉求最短路 #include<bits/stdc++.h> using namespace std; int a[2022][2022]; int gcd(int x,int ...

最新文章

  1. 禅道Docker安装包发布
  2. C#中ref和out的原理
  3. python机器学习-sklearn挖掘乳腺癌细胞(五)
  4. pycharm远程调试报错cant ser remote tunneling
  5. 使用ExtJs实现文件下载
  6. 计算机应用基础任务式教程 素材,计算机应用基础任务化教程教学大纲
  7. pr如何跳到关键帧_pr怎么跟踪?pr怎么做运动跟踪怎么用?
  8. 什么是外汇期货?外汇的风险都有哪些?
  9. Downward API
  10. php调用和风天气api,推荐一个免费7天天气预报API服务:和风天气
  11. Lua实现简易飞机大战
  12. LTE下行用户特定参考信号
  13. vue中阻止粘贴的实现
  14. 创业起步的十大准备步骤
  15. php如何做md5签名,MD5数字签名算法:生成签名和验签(附代码)
  16. 微服务商城系统(十三)订单、支付流程分析
  17. Java序列化与反序列化的深度思考
  18. 网友吐槽常被盒马种草 但你知道带货王是怎么来的吗?
  19. Qt中国象棋之棋子的实现
  20. leetcode_592. 分数加减运算

热门文章

  1. Python自学笔记9:实操案例六(千年虫,购物流程)
  2. 利用 Yolo V3 算法对游戏进行目标检测(DNF 为例)
  3. JAVA小练习102——List接口的特有方法(增删改)
  4. 服务器显示free怎么回事,free云服务器
  5. arm linux cpu优化,ARM CPU与Intel x86 CPU性能比较
  6. 全新TFN FGT720A扫频仪
  7. 关于二分查找和二分搜索
  8. Gravatar头像-网站头像设置详解
  9. xwiki系统安装配置说明书
  10. px一键标注psd软件平台