hdu3127
来源:互联网 发布:女士44号运动鞋淘宝 编辑:程序博客网 时间:2024/06/07 05:58
题意:给你一块X*Y的布,然后选做n个手帕,给你这n个手帕的长和块,做出每个手帕会获得相应的利润,问该怎样分配这块布,才能获得最大的利润。
http://www.cnblogs.com/feature/articles/1856555.html 图画的不错,很容易理解。
#include<iostream>#include<algorithm>#include<cstdio>#include<string.h>using namespace std;int dp[1100][1100];struct node{ int x,y; int val;}Node[24];int max(int a,int b){ return a>b?a:b;}int main(){ int T; int N,X,Y; scanf("%d",&T); while(T--) { memset(Node,0,sizeof(Node)); memset(dp,0,sizeof(dp)); scanf("%d%d%d",&N,&X,&Y); for(int i=0; i<N; i++) { scanf("%d%d%d",&Node[i].x,&Node[i].y,&Node[i].val); } for(int i=1; i<=X; i++) for(int j=1; j<=Y; j++) for(int k=0; k<N; k++) { if(i>=Node[k].x && j>=Node[k].y) dp[i][j]=max(dp[i][j],max((dp[i-Node[k].x][j]+dp[Node[k].x][j-Node[k].y]),(dp[i][j-Node[k].y]+dp[i-Node[k].x][Node[k].y]))+Node[k].val); int ii=j; int jj=i; if(jj>=Node[k].y && ii>=Node[k].x) dp[i][j]=max(dp[i][j],max((dp[i-Node[k].y][j]+dp[Node[k].y][j-Node[k].x]),(dp[i][j-Node[k].x]+dp[i-Node[k].y][Node[k].x]))+Node[k].val); } printf("%d\n",dp[X][Y]); } return 0;}
- hdu3127
- HDU3127 dp
- HDU3127-WHUgirls
- HDU3127:WHUgirls(完全背包)
- HDU3127 二维完全背包 DP
- hdu3127(二维完全背包)
- HDU3127 完全背包 枚举所有小矩形
- 【二维费用之完全背包】HDU3127-WHUgirls
- HDU3127:WHUgirls(二维完全背包)
- hdu3127 WHUgirls 残忍的完全背包。。。比较有意思,,物品的那层循环放在最里面
- Union和Union All的区别
- Ubuntu安装wxgtk
- 如何为多目录源文件建立makefile
- servlet中web.xml配置详解
- java中list里面存放map,根据map中的某一个字段进行排序
- hdu3127
- ftrace 简介
- SQL 实现定期备份数据库
- 有趣的javascript应用
- 检测到有潜在危险的Request.Form 值 解决方法
- SNA架构
- Starling实录--Starling资料汇总
- 适配器和使用适配器的一些组件
- Not in the soders解决方案