https://vjudge.net/problem/POJ-1837
题目大意:nnn个砝码,mmm个挂钩,给出mmm个挂钩的位置,范围在[−15,15][-15,15][−15,15],负数表示在天平左侧,正数表示在天平右侧。然后给出nnn个砝码的重量,问在使用全部砝码的前提下使得天平平衡的方案数。

思路:dp[i][j]dp[i][j]dp[i][j]表示在使用了iii个砝码达到状态jjj时的方案数。考虑到天平一侧的重量最多为20∗25∗15=750020*25*15=750020∗25∗15=7500,而且负数下标不好处理,我们搞一个dp[n+1][15005]dp[n+1][15005]dp[n+1][15005]的数组,并初始化dp[0][7500]=1dp[0][7500]=1dp[0][7500]=1。然后逐个考虑砝码:第iii个砝码可以放到任意一个挂钩上,于是有:dp[i][j+wi∗mj]+=dp[i−1][j]dp[i][j+w_i*m_j]+=dp[i-1][j]dp[i][j+wi​∗mj​]+=dp[i−1][j]可以剪枝去掉一些没有意义的情况。最终答案就是dp[n][7500]。dp[n][7500]。dp[n][7500]。

#include<cstdio>
#define INF 0x3f3f3f3f
#define eps 1e-8
#define pr pair<int,int>
using namespace std;
typedef long long ll;int dp[25][15005];
int v[25],w[25];int main()
{int n,m;scanf("%d%d",&m,&n);for(int i=1;i<=m;i++)scanf("%d",&v[i]);for(int i=1;i<=n;i++)scanf("%d",&w[i]);dp[0][7500]=1;for(int i=1;i<=n;i++){for(int j=0;j<=15000;j++){if(dp[i-1][j])//只考虑有效的状态{for(int k=1;k<=m;k++)dp[i][j+w[i]*v[k]]+=dp[i-1][j];}}}printf("%d\n",dp[n][7500]);return 0;
}

POJ 1837 Balance dp相关推荐

  1. POJ 1837 Balance(01背包变型)

    题意: 有一个杠杆,上面有c个钩子,有g件物品,全部放上去,问有多少种方式使天平平衡. 思路: 1. dp[i][j]代表第 i 件物品放到杆子上面之后,平衡度为 j 的方法数 2. 如果不加处理,j ...

  2. poj 1837 Balance

    题意:有c个挂钩,g个砝码,要求用完所以砝码,且天平平衡的方法数 状态方程:f[i][j]表示用完前i个砝码平衡度为j时的方法数,f[i-1][j]表示用完前i-1个砝码,平衡度为j的方法数,此时加上 ...

  3. Fire (poj 2152 树形dp)

    Fire (poj 2152 树形dp) 给定一棵n个结点的树(1<n<=1000).现在要选择某些点,使得整棵树都被覆盖到.当选择第i个点的时候,可以覆盖和它距离在d[i]之内的结点,同 ...

  4. 【POJ - 1837】Balance(dp及其优化)

    题干: Gigel has a strange "balance" and he wants to poise it. Actually, the device is differ ...

  5. POJ 图论分类 + DP(较全 自己又加了点)

    DP -----------动态规划 状态压缩DP 2411 (棋盘规模较大)状态压缩DP+DFS+滚动数组 2664 (棋盘规模较小)直接递推即可(DP) 2506 (棋盘规模较小)直接递推即可(D ...

  6. POJ 2096 (概率DP)

    题目链接: http://poj.org/problem?id=2096 题目大意:n种bug,s个子系统.每天随机找一个bug,种类随机,来自系统随机.问找齐n种bug,且每个子系统至少有一个bug ...

  7. POJ 2955 (区间DP)

    题目链接: http://poj.org/problem?id=2955 题目大意:括号匹配.对称的括号匹配数量+2.问最大匹配数. 解题思路: 看起来像个区间问题. DP边界:无.区间间隔为0时,默 ...

  8. 目的地返回POJ 2336 动态规划(DP) Ferry Loading II

    在写这篇文章之前,xxx已写过了几篇关于改目的地返回主题的文章,想要了解的朋友可以去翻一下之前的文章 标题链接:http://poj.org/problem?id=2336 分析:想设我们要求的是第i ...

  9. POJ 2342 (树形DP)

    题目链接: http://poj.org/problem?id=2342 题目大意:直属上司和下属出席聚会.下属的上司出现了,下属就不能参加,反之下属参加.注意上司只是指直属的上司.每个人出席的人都有 ...

最新文章

  1. 技术07期:图计算,让数据间的关系无处可藏【社区分切篇】
  2. 关于学习Python的一点学习总结(13->浅复制和深复制)
  3. 科研文献|了解多个含水层中微生物砷的迁移:DNA 和 RNA 分析的见解
  4. CTF(Pwn)32位文件 和 64 文件 的 差异
  5. 程序员开发利器:源代码管理的十条建议
  6. 聊一聊Android 6.0的运行时权限
  7. how does UI Framework get url of detail page - _router
  8. C#正则表达式判断输入日期格式是否正确
  9. 什么是IP地址、子网掩码、路由和网关?
  10. Java集合框架总结
  11. JAVA 实现AES加密解密
  12. Windows下的虚拟桌面软件——Virgo
  13. python实现jpeg转jpg
  14. JQuery中三元运算
  15. 关于idea debug step into不进入class文件或者自己想要略过的一些文件设置
  16. Django-路由管理 path view
  17. 计算机系统未来发展方向论文,浅谈计算机未来发展趋势(期末论文)
  18. Dockerfile 构建python环境
  19. 前端算法笔记-数据结构基础
  20. python数学计算函数_python之数学函数篇

热门文章

  1. 刚刚开始学C语言的懵懂
  2. 哥,8年不见,您啥时候回来?度娘想死您了!
  3. linux进程网络监控,linux下的进程、网络、性能监控命令
  4. docker(6)容器的三剑客:docker machine、docker-compose、docker Swarm
  5. 【深度学习】半监督学习入门:Mean teachers
  6. 一个程序员老总的年终总结2010版
  7. 代码随想录Day04 | LeetCode24. 两两交换链表中的节点、LeetCode19. 删除链表的倒数第N个节点、LeetCode160. 链表相交、LeetCode142. 环形链表Ⅱ
  8. java.lang.OutOfMemoryError: Metaspace
  9. 如何设置迪文T5L串口屏的防盗版功能?
  10. tcpip Socket编程入门