HDU 3127 (DP)
来源:互联网 发布:java培训工资 编辑:程序博客网 时间:2024/05/22 14:41
写过的最坑的题目。
题意很不清楚,意思是把一块布横向或者纵向切割,如果得到一块长xi,宽yi的布就可以得到vi的价值。
首先每两次切割都必须得到一块有价值的布(题目哪里有说啊)。
然后就很简单了暴力枚举。
坑爹的是long long 死活wa 改成int居然就好了也是瞎了狗眼。
#include <bits/stdc++.h>using namespace std;#define maxn 33struct node { int x, y, val; node (int _x = 0, int _y = 0, int _val = 0) : x(_x), y(_y), val(_val) {}}p[maxn];int t, n, tot;int dp[1111][1111];int solve (int x, int y) { //长x 宽y memset (dp, 0, sizeof dp); for (int i = 0; i <= x; i++) { for (int j = 0; j <= y; j++) { for (int k = 0; k < tot; k++) { if (i >= p[k].x && j >= p[k].y) { dp[i][j] = max (dp[i][j], dp[i-p[k].x][j]+dp[p[k].x][j-p[k].y]+p[k].val); dp[i][j] = max (dp[i][j], dp[i][j-p[k].y]+dp[i-p[k].x][p[k].y]+p[k].val); } } } } return dp[x][y];}int main () { //freopen ("in", "r", stdin); scanf ("%d", &t); while (t--) { tot = 0; int x, y; scanf ("%d%d%d", &n, &x, &y); if (n == 0) { printf ("0\n"); continue; } for (int i = 1; i <= n; i++) { int xx, yy, vv; scanf ("%d%d%d", &xx, &yy, &vv); p[tot++] = node (xx, yy, vv); p[tot++] = node (yy, xx, vv); } printf ("%d\n", solve (x, y)); } return 0;}
0 0
- hdu 3127(dp)
- HDU 3127 (DP)
- HDU DP
- DP? HDU
- DP? HDU
- DP? HDU
- 【dp】HDU
- 【dp】HDU
- 【dp】 HDU
- DP? HDU
- HDU OJ 3127 WHUgirls【DP之背包】
- HDU 3127 WHUgirls dp背包问题
- HDU OJ 3127 WHUgirls【DP之背包】
- 【DP】HDU 3127 WHUgirls 完全背包
- HDU 3127 WHUgirls (线性dp 完全背包)
- hdu 3127 WHUgirls【dp】好题~
- HDU 1003 && HDU 1231 DP
- hdu 1058 DP
- 【ecshop 资料】ecshop对数据库测试数据进行清除操作。老杨ecshop原创
- centos 利用crontab定时任务设计
- 《兄弟》读后感
- iOS微信支付流程及实现
- Storm-HDFS整合过程中问题解决
- HDU 3127 (DP)
- Hive快速入门
- Could not find the python development headers
- APP气泡聊天框
- js获取url中的某个参数
- 简单实现单选多选(GrideView实现单选,ListView实现多选),横向ListView
- JS开发HTML5游戏《神奇的六边形》(二)
- Unity 实现Log实时输出到屏幕或控制台上<一>
- Android ListView工作原理解析