P2347 砝码称重

题目描述

设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其总重<=1000),

输入输出格式

输入格式:

输入方式:a1 a2 a3 a4 a5 a6

(表示1g砝码有a1个,2g砝码有a2个,…,20g砝码有a6个)

输出格式:

输出方式:Total=N

(N表示用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况)

输入输出样例

输入样例#1:

1 1 0 0 0 0

输出样例#1:

Total=3

暴力算法略,这里只讲dp。背包问题,每个砝码选或不选,显然01背包。我们把砝码按照从小到大的顺序依次排开f[i][j]表示前i个砝码能否组成质量j。转移:f[i][j] = f[i-1][j] || f[i-1][j-w[i]],w[i]表示第i件物品(砝码)的价值(质量),k为第i件物品(砝码)的数量常规压缩一维:f[j] = f[j] || f[j-k*w[i]]代码中做了这样的处理:用i和j来共同控制第i件物品。代码如下:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <cstring>inline int read()
{int x = 0;char ch = getchar();char c = ch;while(ch > '9' || ch < '0')c = ch,ch = getchar();while(ch <= '9' && ch >= '0')x = x * 10 + ch - '0',ch = getchar();if(c == '-')return -1 * x;return x;
}const int INF = 99999999999;int sum;
int w[7] = {0,1,2,3,5,10,20};
bool f[1010];
int num[10];
int ans;int main()
{for(int i = 1;i <= 6;i ++){num[i] = read();sum += num[i] * w[i];}f[0] = true;for(int i = 1;i <= 6;i ++){for(int j = 1;j <= num[i];j ++){for(int k = sum;k >= w[i];k --){if(f[k - w[i]])f[k] = true;}}}for(int i = 1;i <= sum;i ++){if(f[i])ans ++;}printf("Total=%d", ans);return 0;
}

转载于:https://www.cnblogs.com/huibixiaoxing/p/6723080.html

洛谷P2347 砝码称重 [2017年4月计划 动态规划01]相关推荐

  1. 洛谷 P2347 砝码称重

    P2347 砝码称重 题目描述 设有1g.2g.3g.5g.10g.20g的砝码各若干枚(其总重<=1000), 输入输出格式 输入格式: 输入方式:a1 a2 a3 a4 a5 a6 (表示1 ...

  2. 洛谷P2347 砝码称重 某一年noip提高组原题

    可以转化为01背包求方案数的问题,dp数组f[][]表示第几个砝码能称出的重量,可压缩至一维 转移方程为f(i,j)+=f(i-1,j-w[i]) 当前我们可以称出的重量必定是由之前的砝码重量转移过来 ...

  3. 洛谷P1411 砝码称重

    传送门啦 这个题总体思路就是先搜索在 $ dp $ void dfs(int keep,int now){//使用 放弃 if(now > m) return;//已经放弃超过m个了,就退出if ...

  4. 洛谷P2429 制杖题 [2017年6月计划 数论10]

    P2429 制杖题 题目描述 求不大于 m 的. 质因数集与给定质数集有交集的自然数之和. 输入输出格式 输入格式: 第一行二个整数 n,m. 第二行 n 个整数,表示质数集内的元素 p[i]. 输出 ...

  5. 洛谷P1474 [USACO 2.3]货币系统 Money Systems [2017年4月计划 动态规划04]

    P1474 货币系统 Money Systems 题目描述 母牛们不但创建了它们自己的政府而且选择了建立了自己的货币系统.由于它们特殊的思考方式,它们对货币的数值感到好奇. 传统地,一个货币系统是由1 ...

  6. 【题解】Luogu P2347 砝码称重

    正经·DP题解 一道非常好的背包练手题( sto(注:原思路来源 SLYZ_0120 的题解)orz 开始这道题 1.输入六个数,存进数组中 2.初始化 f 数组为0. f [ i ] 表示重量为 i ...

  7. 洛谷P1757 通天之分组背包 [2017年4月计划 动态规划06]

    P1757 通天之分组背包 题目背景 直达通天路·小A历险记第二篇 题目描述 自01背包问世之后,小A对此深感兴趣.一天,小A去远游,却发现他的背包不同于01背包,他的物品大致可分为k组,每组中的物品 ...

  8. 砝码称重【第十二届蓝桥杯】【省赛】【B组】

    砝码称重[第十二届蓝桥杯][省赛][B组] Description 你有一架天平和N个砝码,这N个砝码重量依次是W1.W2,-WN 请你计算一共可以称出多少种不同的重量? 注意砝码可以放在天平两边. ...

  9. 【DP】砝码称重 (ssl 1072)

    砝码称重 ssl 1072 题目大意: 有6种砝码,每种的个数分别为a1,a2,a3,a4,a5,a6,请问可以平出多少种重量(0除外) Description 设有1g.2g.3g.5g.10g.2 ...

  10. 【OJ8756】砝码称重V2,可达性多重背包

    砝码称重V2 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 设有1g.2g.3g.5g.10g.20g的砝码各若干枚(其总重<=100,000),要求:计 ...

最新文章

  1. 怎么解决svn清理失败且路径显示乱码问题
  2. Kubernetes环境下的各种调试方法
  3. 再论EM算法的收敛性和K-Means的收敛性
  4. Python算法题----在列表中找到和为s的两个数字
  5. 理解PHP5中static和const关键字
  6. 表单提交_django 的ajax提交与表单提交记录
  7. Web 的将来是语义的
  8. wifi抓包/苹果电脑mac book抓wifi sniffer packet
  9. 《算法设计与分析》第十三周作业
  10. Android Studio 3.4.1(3.5.2)入门教程( 2019.12.14修订)
  11. 黑马程序员MySQL视频操作代码-P79
  12. MFC对话框中嵌入D3D
  13. 计算机怎么登录用户名和密码忘了怎么办,忘记了路由器的登录用户名与密码怎么办...
  14. openstack rally安装失败后折腾一遭
  15. STM32 us精确延时方式
  16. 微信小程序中发送网络请求
  17. 文件已在explorer.exe中打开无法删除,解决办法如下,全图
  18. 计算机主机为什么漏电,电脑机箱漏电怎么回事
  19. 嵌入式系统主要应用哪些行业?
  20. 瞧不上 C++ 和 D 语言,国外程序员将 5.8 万行代码迁移到 Jai 语言,到底图什么?

热门文章

  1. 余额宝限购了!为啥?
  2. MatchingFrontier包简介及R实现
  3. 查看电脑的s/n序列号信息方式
  4. 【转】随机函数 rand() srand() 以及seed的原理
  5. ODI11G 在Linux上的安装配置
  6. linux中vsftpd登陆慢卡问题解决方法
  7. asp.net 路径
  8. 云中漫步——迎接云计算时代的到来
  9. 八月份技术指标和个人指标
  10. Android Volley 源码解析(三),图片加载的实现