opj1837 Balance(dp)
http://poj.org/problem?id=1837
(1)用dp[i][j]表示挂了 i 个重物时 平衡度为 j 的数目;
(2)核心部分:
for(j=1;j<=m;j++)for(k=0;k<=15000;k++)if(dp[j-1][k])for(i=1;i<=n;i++)dp[j][k+c[i]*g[j]]+=dp[j-1][k];
其中, j 表示重物编号, k 是背包, i 为所挂位置。注意循环的顺序,先确定重物,再打开背包,最后逐个转移平衡度。
(3)由于力矩的变化才是本题的关键,将中间位置设为平衡位置(dp[0][7500]=1;),力矩为7500时即为平衡。
具体代码:
#include<stdio.h> #include<string.h> int n, m; int g[21], c[21]; int dp[21][15001]; int main() {int i, j, k;while(scanf("%d%d", &n, &m)!=EOF){for(i=1;i<=n;i++) scanf("%d", &c[i]);for(j=1;j<=m;j++) scanf("%d", &g[j]);memset(dp, 0, sizeof(dp));dp[0][7500]=1;for(j=1;j<=m;j++)for(k=0;k<=15000;k++)if(dp[j-1][k])for(i=1;i<=n;i++)dp[j][k+c[i]*g[j]]+=dp[j-1][k];printf("%d\n", dp[m][7500]);} }
转载于:https://www.cnblogs.com/tim11/archive/2012/08/16/2642071.html
opj1837 Balance(dp)相关推荐
- 求三角形最大面积(DP)
求三角形最大面积(DP) 在OJ上奇迹般WA了:WA:70. Why? #include <iostream> #include <string.h> using namesp ...
- LeetCode 编辑距离 II(DP)
1. 题目 给你两个单词 s 和 t,请你计算出将 s 转换成 t 所使用的最少操作数. 你可以对一个单词进行如下两种操作: 删除一个字符 替换一个字符 注意: 不允许插入操作 题目保证有解 示例: ...
- LeetCode 1220. 统计元音字母序列的数目(DP)
文章目录 1. 题目 2. 解题 1. 题目 给你一个整数 n,请你帮忙统计一下我们可以按下述规则形成多少个长度为 n 的字符串: - 字符串中的每个字符都应当是小写元音字母('a', 'e', 'i ...
- LeetCode 265. 粉刷房子 II(DP)
文章目录 1. 题目 2. 解题 1. 题目 假如有一排房子,共 n 个,每个房子可以被粉刷成 k 种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同. 当然,因为市场上不同颜色油 ...
- LeetCode 256. 粉刷房子(DP)
文章目录 1. 题目 2. 解题 1. 题目 假如有一排房子,共 n 个,每个房子可以被粉刷成红色.蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其与相邻的两个房子颜色不能相同. 当然,因 ...
- LeetCode 1223. 掷骰子模拟(DP)
1. 题目 有一个骰子模拟器会每次投掷的时候生成一个 1 到 6 的随机数. 不过我们在使用它时有个约束,就是使得投掷骰子时,连续 掷出数字 i 的次数不能超过 rollMax[i](i 从 1 开始 ...
- LeetCode 1155. 掷骰子的N种方法(DP)
1. 题目 这里有 d 个一样的骰子,每个骰子上都有 f 个面,分别标号为 1, 2, -, f. 我们约定:掷骰子的得到总点数为各骰子面朝上的数字的总和. 如果需要掷出的总点数为 target,请你 ...
- LeetCode 1139. 最大的以 1 为边界的正方形(DP)
1. 题目 给你一个由若干 0 和 1 组成的二维网格 grid,请你找出边界全部由 1 组成的最大 正方形 子网格,并返回该子网格中的元素数量.如果不存在,则返回 0. 示例 1: 输入:grid ...
- 程序员面试金典 - 面试题 17.23. 最大黑方阵(DP)
1. 题目 给定一个方阵,其中每个单元(像素)非黑即白. 设计一个算法,找出 4 条边皆为黑色像素的最大子方阵. 返回一个数组 [r, c, size] ,其中 r, c 分别代表子方阵左上角的行号和 ...
最新文章
- html表白_HTML 表白网页
- 每日一水:HDOJ 1408 盐水的故事
- oracle 磁盘不分区吗,LINUX停ORACLE软件、数据文件等所在的磁盘分区空间不足的解决思路...
- node异步非阻塞的杂谈
- php sql语句过滤,php如何做sql过滤
- 前端学习(1330):数据库相关概念
- ipv6 ospf配置方法_【思唯网络学院】网络故障大全及处理原理和方法
- 流行歌单片机c语言编程,单片机6首音乐播放的proteus仿真电路及C语言程序设计...
- layui弹出层:皮肤扩展(文档解读)
- android 动态改变listview的内容
- Android仿人人客户端(v5.7.1)——应用主界面之左侧面板UI实现
- Pig、Hive、MapReduce 解决分组 Top K 问题
- 第三部分数据结构[专业课考试3]
- 序列平稳性和纯随机性检验
- R实战之从头到尾分析广告数据集
- 微信小程序添加服务器域名
- 官网Tomcat下载方法
- 添加企业微信免验证设置
- 小学算术运算测试程序java_Java实现小学四则运算练习系统(UI)
- 斩获 offer 的 Java 面试宝典