所谓的二维背包Triangular Pastures POJ 1948
这题WA了很多遍,要不就是测试数据 3 1 2 3 输出173,要不就是6 5 5 5 5 5 5 输出-1.甚至有时候把程序改的题目上的测试数据都过不了,各种悲摧,其实我喜欢边写程序边想,这是个很差的习惯,我一定要改!!!这题是看别人的提示写出来的,首先设bool型数组f,令 f[i][j]表示一边长为i,另一边长为j的边可以组合出来,然后在所有可以组合出来的情形中找能组合成三角形且面积最大的。f[i][j]能组合出来的条件是对于加入新边li来说是f[i-li][j] 或f[i][j-li]能组合出来,初始条件是f[0][0]能组合出来。因为题目中说了要用掉所有的栏杆,所以我只考虑两条边,剩下的一条边用总长剪这两条边的长就知道了,然后为了这两天边的列举有对称性,可假设i>= j也算是减少运算量吧。能组成三角形的条件是任意两边之和大于第三边,我令第一条边长i <= (总长-1)/2(稍微想一下就知道了,分奇偶讨论一下)第二条边长<= i且和 i一起满足2*(i+j) > 总长,这样的三条边就一定是能组成三角形的了``````
1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 bool f[900][900]; 5 int main() 6 { 7 int n,l[50]; 8 int sum =0; 9 scanf("%d",&n); 10 for(int i=0; i< n; i++) 11 { 12 scanf("%d",&l[i]); 13 sum += l[i]; 14 } 15 int m1; 16 m1=(sum-1)/2; 17 memset(f,false,sizeof(f)); 18 f[0][0] = true; 19 for(int i=0; i< n; i++) 20 { 21 for(int j = m1; j >= 0; j--) 22 { 23 for(int k = j; k>=0; k--) 24 { 25 if((j>=l[i] &&f[j-l[i]][k]) || (k >= l[i] && f[j][k - l[i]])) 26 f[j][k] = true; 27 } 28 } 29 } 30 double max = 0; 31 bool flag= false; 32 for(int j=m1; j>0; j--) 33 { 34 for(int k = j; 2*(j+k) > sum; k--) 35 { 36 double t=(sum-2*j)*(sum-2*k)*(2*(j+k)-sum)/8.0; 37 if(f[j][k] && t> max) 38 { 39 flag =true; 40 max = t; 41 } 42 } 43 } 44 if(!flag) 45 printf("-1\n"); 46 else 47 { 48 max = sum/2.0*max; 49 int d = (floor)(sqrt(max)*100); 50 printf("%d\n",d); 51 } 52 return 0; 53 }
转载于:https://www.cnblogs.com/allh123/archive/2013/03/27/2985260.html
所谓的二维背包Triangular Pastures POJ 1948相关推荐
- HDU-2159 FATE 二维背包
这题是一个二维背包的题目,刚开始并没有那样去做,只开了一维的空间来存储状态,结果很多的数据都没有跑过去.其实这题这样来问的话可能就明了很多了,求在指定的容忍值和指定的杀怪数下,求最大能够得到了经验数, ...
- HDU-2159 FATE 二维背包
FATE Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- 杭电2159-FATE (二维背包运用+详细解释)
FATE Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- c++ 动态规划-二维背包 and 潜水员问题
动态规划 - 二维背包 1.普通二维(费用)背包 01背包问题:给定 n 种物品和一个重量(容量)(限定条件)为 w 的背包,物品 i 的重量是 wi,其价值为 vi.(每种物品只有一个)问:如何选择 ...
- 背包问题(恰好背满 二维背包) 总结
专题训练:点击打开链接 密码:JXFEACM 他人总结:点击打开链接 背包九讲:点击打开链接 其实核心记住: 背包是组合问题 填充性质 元素之间没关系 1. 01背包(右->左) 恰好装满( ...
- dp之二维背包poj1837(天平问题 推荐)
题意:给你c(2<=c<=20)个挂钩,g(2<=g<=20)个砝码,求在将所有砝码(砝码重1~~25)挂到天平(天平长 -15~~15)上,并使得天平平衡的方法数..... ...
- 动态规划 —— 背包问题 P05 —— 二维背包
[问题] 对于每件物品,具有两种不同的体积,选择这件物品必须同时付出这两种代价,对于每种代价都有一个可付出的最大值(背包容量). 问:怎样选择物品可以得到最大的价值? 设:这两种代价分别为代价1和代价 ...
- HDU2159 FATE(二维背包、带限制条件的背包问题)
题目传送门 题意很明显,就不细说了 我们这里可以把剩下的忍耐度看作背包容量,然后价值就是杀了怪所得的经验 用第二维表示杀了q只怪,这样就能用dp[j][q]表示已消耗j点忍耐度,杀了q只怪时的经验值 ...
- UVA 10306 e-Coins (二维背包)
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
最新文章
- js鼠标略过自动选择当前行
- ASP.NET中gridview获取当前行的索引值
- idea控制台怎么调出来_酸汤饺子最近火了,可是酸汤是怎么调出来的?引起了网友的好奇...
- Hadoop官网的一个WordCount程序
- 《研磨设计模式》chap22 装饰模式Decorator(2)应用到场景
- 路易斯安那州立大学计算机科学,西北路易斯安那州立大学
- python打开文件夹的权限_python修改linux中文件(文件夹)的权限属性操作
- 如何在Python中建立回归模型
- css animation 触发,在JavaScript中触发CSS动画
- 横空出世,比Visio快10倍的画图工具来了
- KB:Office 365 MX验证出错OWA 打开后Http 404
- 计算机应用基础2-excel,《2014计算机应用基础excel2.doc
- aspose.words生成pdf字体乱码为方框
- MATLAB 插值放大
- 无线网卡无法获取dhcp服务器,无线网络无法获取网络IP地址
- 阿里云商标注册快速上手笔记(新手图文教程)
- 动态使用element-plus 的图标
- 西安电子科大版《计算机操作系统》第四版共读——第十一章 多媒体操作系统
- NLP-预训练模型-2018-Bert-解析:BertForMaskedLM
- 论文阅读:Channel Augmented Joint Learning for Visible-Infrared Recognition
热门文章
- Python,美国顶尖大学里最受欢迎的编程入门语言
- LOL手游王者局诺手教学,3级压制阿卡丽,全程一个拼字
- 【蓝桥杯Java_C组·从零开始卷】第五节(二)、BigDecimal的使用
- Oracle goldengate 11g错误汇总
- 异常-自定义异常 和 throw和throws的区别
- hdu3415 单调队列模板题
- unity, 非public变量需要加[SerializeField]才能序列化
- Fedora9中的gcc
- [转]仿163网盘无刷新文件上传系统
- 【数据结构总结】第七章 查找