POJ1837 Balance 分组背包
来源:互联网 发布:知乎 vmwarehorizon 编辑:程序博客网 时间:2024/06/05 05:32
题目链接:poj19837
题目大意:有一个天平两臂各挂一些钩子, 每个钩子下面可以挂一些砝码, 问在使用所有的砝码的情况下有多少种方法可以使天平平衡
思路:该问题可以转化成分组背包的问题,大体如下对于每一种砝码来说我们可以关在任意一个钩子下面,这些事件是互斥的,一个砝码一个组进行分组背包即可,注意的是有负的力矩的存在, 因此我们将坐标轴移动到10000即可,代码如下。
注意的就是:这里平衡即两边的力矩相同 即每个砝码的力矩=距离*重量
#include<stdio.h>#include<string.h>#include<iostream>using namespace std;int dp[25][20000];//前者是个数 后者能到达的力矩 10000为平衡位置 这个数组记录是方法数int pos[25],w[25];int main(){int c,g;while(~scanf("%d%d",&c,&g)){for(int i=1;i<=c;i++)scanf("%d",&pos[i]);for(int i=1;i<=g;i++)scanf("%d",&w[i]);memset(dp,0,sizeof dp);dp[0][10000]=1;for(int i=1;i<=g;i++){for(int j=0;j<20000;j++){for(int k=1;k<=c;k++){int tp = w[i]*pos[k];//力矩 if(j-tp>=0&& dp[i-1][j-tp]) dp[i][j] += dp[i-1][j-tp];}}}printf("%d\n", dp[g][10000]);} return 0;}
阅读全文
0 0
- POJ1837 Balance 分组背包
- poj1837 Balance (二维费用背包&&分组背包)
- POJ1837:Balance (分组背包+二维价格背包) By Assassin
- POJ1837:Balance(01背包)
- POJ1837:Balance(01背包)
- poj1837 balance 背包
- [背包]poj1837 Balance
- POJ1837-Balance(01背包)
- poj1837(分组背包)
- Balance poj1837 (DP & 01背包)
- poj1837-Balance(01背包)
- POJ1837 Balance [背包dp-负值]
- poj1837 Balance
- POJ1837 Balance
- poj1837 - Balance
- poj1837 Balance
- POJ1837--Balance
- poj1837 Balance
- Qt c/C++ 混合编程,windows下的网络编程--udp封装(一)
- 字符设备驱动(二)
- Spring Boot mybati-plus .yml文件的配置文件
- 嵌入式每日学习心得2017.07.21
- 白平衡算法总结
- POJ1837 Balance 分组背包
- Miller_Rabin 素数测试
- 暑期集训之又见GCD
- CCNA第四天实验(rip,eigrp,ospf)
- Java实现快速排序算法
- maven入门,结实maven
- 有三个正整数a,b,c(0<a,b,c<10^6),其中c不等于b。若a和c的最大公约数为b,现已知a和b,求满足条件的最小的c。
- D
- Struts2访问数据