砝码称重 第十二届蓝桥杯B组
你有一架天平和 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组相关推荐
- 2021第十二届蓝桥杯B组省赛C/C++做题过程与反思
2021第十二届蓝桥杯B组省赛C/C++做题过程与反思 鄙人大一,第一次有幸参加蓝桥杯b组c.以下是本人的做题全过程,注意了!!!!不一定是正确答案!! 如果有误,还请大佬们指点指点. 试题 A: ...
- 第十二届蓝桥杯青少年组国赛C++中级组 第1题 -- 第3题(python3实现)
12届蓝桥杯青少年组国赛C++中级组编程题 12届蓝桥杯青少年组国赛C++中级组编程题_lybc2019的博客-CSDN博客 蓝桥杯算法学习路线 | 全程制作过程公开 蓝桥杯算法学习路线 | 全程制作 ...
- 2021第十二届蓝桥杯Python组国赛/决赛 题解
2021第十二届蓝桥杯Python组国赛/决赛 题解 前言 2021年第十二届蓝桥杯国赛/决赛,因为疫情原因没有像往年一样前往北京参赛,而是在自己学校的机房进行考试,形式上类似蓝桥杯省赛,但由于参加国 ...
- 2021年第十二届蓝桥杯A组省赛
时隔9个月,终于想起补题了 编程题 A. 卡片(5分) 答案:3181 分析: 简单题,直接从1开始处理每一个数,直到出现某一种卡片不够为止. #include<bits/stdc++.h> ...
- 第十二届蓝桥杯A组省赛填空题Java思路及代码合集(相乘直线货物摆放路径回路计数)
文章目录 试题 A: 相乘 试题 B: 直线 试题 C: 货物摆放 试题 D: 路径 试题 E: 回路计数 试题 A: 相乘 本题总分:5 分 [问题描述] 小蓝发现,他将 1 至 100000000 ...
- 第十二届蓝桥杯JavaB组省赛H题 杨辉三角形
早上的比赛,忘记测试用例了. 计算输入数字N在杨辉三角形中出现的第一个位置 (把杨辉三角形平铺成一个数列) 我是构建了杨辉三角,用count记录添加次数,发现N时输出count (注意特判当N是1时输 ...
- 第十二届蓝桥杯A组省赛试题 I: 双向排序(Java)
试题 I: 双向排序 本题总分:25 分 [问题描述] 给定序列 (a1, a2, · · · , an) = (1, 2, · · · , n),即 ai = i. 小蓝将对这个序列进行 m 次操作 ...
- 第十二届蓝桥杯JavaB组省赛H_杨辉三角形
一.题目: 二.题目分析: 首先这个题是我们比较熟悉的杨辉三角,需要注意的就是评测用例的范围. 三.解法 . 题目给出20%的用例是1-10 所以可以直接 枚举出1-10的即可获得2分 . 下面我第一 ...
- 第十二届蓝桥杯B组E路径
//迪杰斯特拉求最短路 #include<bits/stdc++.h> using namespace std; int a[2022][2022]; int gcd(int x,int ...
最新文章
- 禅道Docker安装包发布
- C#中ref和out的原理
- python机器学习-sklearn挖掘乳腺癌细胞(五)
- pycharm远程调试报错cant ser remote tunneling
- 使用ExtJs实现文件下载
- 计算机应用基础任务式教程 素材,计算机应用基础任务化教程教学大纲
- pr如何跳到关键帧_pr怎么跟踪?pr怎么做运动跟踪怎么用?
- 什么是外汇期货?外汇的风险都有哪些?
- Downward API
- php调用和风天气api,推荐一个免费7天天气预报API服务:和风天气
- Lua实现简易飞机大战
- LTE下行用户特定参考信号
- vue中阻止粘贴的实现
- 创业起步的十大准备步骤
- php如何做md5签名,MD5数字签名算法:生成签名和验签(附代码)
- 微服务商城系统(十三)订单、支付流程分析
- Java序列化与反序列化的深度思考
- 网友吐槽常被盒马种草 但你知道带货王是怎么来的吗?
- Qt中国象棋之棋子的实现
- leetcode_592. 分数加减运算