poj 1948 Triangular Pasture
来源:互联网 发布:json.stringify array 编辑:程序博客网 时间:2024/05/26 17:48
Description
Like everyone, cows enjoy variety. Their current fancy is new shapes for pastures. The old rectangular shapes are out of favor; new geometries are the favorite.
I. M. Hei, the lead cow pasture architect, is in charge of creating a triangular pasture surrounded by nice white fence rails. She is supplied with N (3 <= N <= 40) fence segments (each of integer length Li (1 <= Li <= 40) and must arrange them into a triangular pasture with the largest grazing area. Ms. Hei must use all the rails to create three sides of non-zero length.
Help Ms. Hei convince the rest of the herd that plenty of grazing land will be available.Calculate the largest area that may be enclosed with a supplied set of fence segments.
I. M. Hei, the lead cow pasture architect, is in charge of creating a triangular pasture surrounded by nice white fence rails. She is supplied with N (3 <= N <= 40) fence segments (each of integer length Li (1 <= Li <= 40) and must arrange them into a triangular pasture with the largest grazing area. Ms. Hei must use all the rails to create three sides of non-zero length.
Help Ms. Hei convince the rest of the herd that plenty of grazing land will be available.Calculate the largest area that may be enclosed with a supplied set of fence segments.
Input
* Line 1: A single integer N
* Lines 2..N+1: N lines, each with a single integer representing one fence segment's length. The lengths are not necessarily unique.
* Lines 2..N+1: N lines, each with a single integer representing one fence segment's length. The lengths are not necessarily unique.
Output
A single line with the integer that is the truncated integer representation of the largest possible enclosed area multiplied by 100. Output -1 if no triangle of positive area may be constructed.
Sample Input
511334
Sample Output
692
二维dp模板题,三角形面积计算:p=(a+b+c)/2,s=sqrt(p*(p-a)*(p-b)*(p-c));
dp[i][j]=1表示长度为i和j的棒子可以构成三角形,第三边为s-i-j.每条边不超过总和s/2,棒子最多用一次,且必须用完。
#include<iostream> #include<cmath> #include<cstdio> #include<cstring> using namespace std; int x[41], n, tot = 0, ans = -1, half; bool dp[801][801]; int main() { int i,j,k; scanf("%d", &n); for(i = 1; i <= n; i++) { scanf("%d", &x[i]); tot += x[i]; } memset(dp, 0, sizeof(dp)); dp[0][0] = 1, half = tot >> 1; for(i = 1; i <= n; i++) for(j = half; j >= 0; j--) for( k = j; k >= 0; k--) if (j >= x[i] && dp[j - x[i]][k] || k >= x[i] && dp[j][k - x[i]]) dp[j][k] = 1; for(i = half; i >= 1; i--) for(j = i; j >= 1; j--) if (dp[i][j]) { k = tot - i - j; if (i + j > k && i + k > j && j + k > i) { double p = (i + j + k) * 1.0 / 2; int temp = (int)(sqrt(p * (p - i) * (p - j) * (p - k)) * 100); if (temp > ans) ans = temp; } } cout << ans << endl; return 0; }
0 0
- poj 1948 Triangular Pasture
- poj 1948 Triangular Pastures
- poj 1948 Triangular Pastures
- POJ 1948 Triangular Pastures
- poj 1948 Triangular Pastures
- poj 1948 Triangular Pastures
- poj 1948 Triangular Pastures
- poj 1948 Triangular Pastures
- poj 1948 Triangular Pastures
- poj- 1948- Triangular Pastures-DP
- poj 1948 Triangular Pastures dp
- poj 1948 Triangular Pastures 小结
- POJ 1948 Triangular Pastures(DP)
- POJ 1948 Triangular Pastures(DP)
- POJ 1948 Triangular Pastures 笔记
- poj 1948 Triangular Pastures 01背包
- POJ 1948 TRIANGULAR PASTURES(背包问题)
- poj 1948 Triangular Pastures(二维01背包)
- 51用485传送温度给stm32
- 静态代理与动态代理
- box2d——2.添加鼠标关节MouseJoint和box2d基础概念
- oracle乱码问题
- CentOS 6.4安装配置LAMP服务器(Apache+PHP5+MySQL)
- poj 1948 Triangular Pasture
- Spinner 二级联动
- 成佩涛编程之路——Mysql explain—type列详细说明
- 已有iis+php+mysql环境,如何更换php版本!
- 操作系统之线程
- 导入android工程出现红色感叹号
- dbcp pool相关参数详解
- PAT A 1044. Shopping in Mars (25)
- Linux crontab的使用方式,sh脚本的编写,sh脚本自动启动tomcat服务器,sh监控系统运行情况