Language:
Triangular Pastures
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. 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. 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 5 1 1 3 3 4 Sample Output 692 Hint
[which is 100x the area of an equilateral triangle with side length 4]
首先说自己没想出来,不知道怎么把他抽象成二维背包,看了大神们的解释才明白了些。 把边的长度看成费用, 三角形中的某条边 i 看作第一维费用,另一条边看作是第二维费用 j,背包容量为总长的一半(三角形任意一条边都不可能比周长的一半大)则第三边为总长度sum-i-j;
找出所有满足的i,j,枚举求出最大面积即可。其中面积公式为{ 1.t=sum/2; 2.area=sqrt(t*(t-i)*(t-j)*(t-(sum-i-j));}
状体转移方程为 dp[ k ][ i ][ j ] = dp[ k-1 ][ i-sticks[k] ][ j ] | dp[ k-1 ][ i ][ j-sticks[k] ]; 意思是取第k条棍子的时候,组成的两条边长度分别为 i 和 j 。
AC代码如下:
|
二维费用背包--poj1948
最新推荐文章于 2025-03-23 16:42:09 发布