POJ1948 Triangular Pastures】的更多相关文章

POJ1948 Triangular Pastures #include <iostream> #include <cmath> using namespace std; ; bool dp[maxn][maxn]; int a[maxn]; double area(double a, double b, double c) { ; return sqrt(p*(p-a)*(p-b)*(p-c)); } bool is_ok(int a, int b, int c) { if (a…
Triangular Pastures POJ - 1948 sum表示木条的总长.a[i]表示第i根木条长度.ans[i][j][k]表示用前i条木条,摆成两条长度分别为j和k的边是否可能. 那么ans[i][j][k]=ans[i-1][j-a[i]][k] || ans[i-1][j][k-a[i]] 可以用滚动数组优化. 最后在ans[n]中枚举i和j,如果ans[n][i][j]为true,再算出sum-i-j的长度,判断是否存在分别以i,j,sum-i-j为三边长的三角形.如果存在,…
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 triang…
描述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 pastur…
题意:给出n条边,用这n条边构成一个三角形,求三角形的最大面积. 先求面积,用海伦公式,s=sqrt(p*(p-a)*(p-b)*(p-c)),其中a,b,c分别为三角形的三条边,p为三角形的半周长,同时由这个根式可以推出,三角形的任意一条边小于其半周长(根号里面大于0,如果等于0面积为0没有意义了) 所以考虑背包两条边,再用周长减去这两条边求出第三条边,再遍历一遍找出最大的三角形. dp[i][j]表示三角形的第一条边为i,第二条边为j所构成的三角形是否存在, 如果存在,dp[i][j]=1,…
题目地址:http://poj.org/problem?id=1948 题目大意: 给N条边,把这些边组成一个三角形,问面积最大是多少?必须把所有边都用上. 解题思路: 根据题意周长c已知,求组合三边长使得三角形面积最大.如果直接DFS的话,每次考虑每根木棍放在哪一条边上,爆搜,可以加上每条边不会大于周长的一半的剪枝.根据数据规模,仍会超时,所以可以考虑采用动态规划.因为周长c已知,所以只需考虑其中两条边即可.类似二维0-1背包的做法,开一个二维判定数组f[i][j],i代表第一条边长为i,j为…
题意: 把很多单独的线段重新组合成一个三角形,使得三角形面积最大(所有的线段都必须用上). 思路: 三角形的任意一条边的边长不能超过周长的一半,只需要用dp枚举两条边j,k,剩下的一条边长为tot  - j - k;判断枚举出的这三条边是否能组成三角形,用海伦公式求出面积 代码: #include <map> #include <set> #include <stack> #include <queue> #include <cmath> #in…
首先我是按这篇文章来确定题目的. poj3624 Charm Bracelet 模板题 没有要求填满,所以初始化为0就行 #include<cstdio> #include<algorithm> #include<cmath> #include<iostream> #include<cstring> using namespace std; ]; ]; int n,m; +]; int main() { // freopen("inpu…
poj3624 Charm Bracelet 模板题 没有要求填满,所以初始化为0就行 #include<cstdio> #include<iostream> using namespace std; #define N 15010 int n,m,v[N],c[N],f[N]; int main(){ scanf("%d%d",&n,&m); ;i<=n;i++) scanf("%d%d",&v[i],&…
杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze 广度搜索1006 Redraiment猜想 数论:容斥定理1007 童年生活二三事 递推题1008 University 简单hash1009 目标柏林 简单模拟题1010 Rails 模拟题(堆栈)1011 Box of Bricks 简单题1012 IMMEDIATE DECODABILITY…