TOJ 1536
来源:互联网 发布:理光复印机网络打印 编辑:程序博客网 时间:2024/06/17 00:43
题目标题:
Accepted Necklace
题目连接:
http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1536
题目类型:
动态规划 - 多维背包
数据结构:
int dp[1005][25]; //重量 个数 struct LMIC_PACK{int v, w;};
思路分析:
比较典型的多维背包
一个维是重量
一个维是个数
重量要求个数一定要恰好等于给定的值
所以我们在初始化的时候要初始化成负无穷
证明:
略
源代码:
#include <iostream>#include <stdio.h>using namespace std;int n, m, w;int dp[1005][25]; struct LMIC_PACK{int v, w;};void _ini(){int i, j;for( i = 0; i < 1005; i ++ ){for( j = 0; j < 25; j ++ ){if( !j ){dp[i][j] = 0;}else{dp[i][j] = -9999999;}}}}int main(){int i, j, k, t;LMIC_PACK arr[25];scanf( "%d", &t );while( t -- ){_ini();scanf( "%d%d", &n, &m );for( i = 1; i <= n; i ++ ){scanf( "%d%d", &arr[i].v, &arr[i].w );}scanf( "%d", &w );for( i = 1; i <= n; i ++ ){for( j = w; j >= arr[i].w; j -- ){for( k = m; k >= 1; k -- ){dp[j][k] = max( dp[j][k], dp[j - arr[i].w][k - 1] + arr[i].v ); }} }printf( "%d\n", dp[w][m] < 0 ? 0 : dp[w][m] );}return 0;}
0 0
- TOJ 1536
- TOJ 2976
- toj 3140
- toj 1153
- TOJ 1772
- TOJ 3250
- TOJ 3051
- TOJ 4303
- TOJ 1005
- TOJ 1545
- TOJ 2378
- TOJ 1537
- TOJ 1252
- TOJ 1408
- TOJ 1509
- TOJ 2882
- TOJ 1052
- TOJ-ACM
- linux中的热插拔和mdev机制
- nao机器人动作关节值记录的方法
- iOS沙盒(sandbox)
- C++之“友元类”学习笔记
- poj3278 Catch That Cow
- TOJ 1536
- hdu4118
- css+div 图片排列布局
- HDU 1395(快速幂模板)
- POJ 2828 Buy Tickets
- 经典c程序(0004)---输入三个整数x,y,z,请把这三个数由小到大输出。
- Oracle PCTFREE PCTUSED FREELIST讲解
- 快速排序中交换两个数时,不使用辅助变量的bug. 陷阱
- CCLabelTTF和CCLabelAtlas区别(三种文字类的区别)