poj 1948 Triangular Pastures
来源:互联网 发布:剑三捏脸数据不合法 编辑:程序博客网 时间:2024/05/21 09:47
题意:
给你n个木块,问你把所有木块用上构造一个三角形最大是多少
分析:
n<=40,len[i]<=40 那么我可以知道边最大不超过40*40/2
那么我们暴力枚举2个边就可以
写的有点丑g++超时,c++AC
ACcode:
#include <iostream>#include <cstdio>#include <algorithm>#include <cmath>#define maxn 2006#define inf 0x3f3f3f3f#include <cstring>#define ll long longusing namespace std;int a[maxn];int dp[maxn][maxn];double fun(double a,double b,double c){ double p=(a+b+c)/2; return sqrt(p*(p-a)*(p-b)*(p-c));}int main(){ int n; while(scanf("%d",&n)!=EOF){ int sum=0; for(int i=1;i<=n;++i)scanf("%d",&a[i]),sum+=a[i]; memset(dp,0,sizeof(dp)); dp[0][0]=1; double ans=0; for(int i=1;i<=n;i++) for(int j=sum/2;j>=0;j--) for(int k=sum/2;k>=0;k--){ if(j-a[i]>=0&&dp[j-a[i]][k]){ dp[j][k]=1; ans=max(ans,fun(j,k,sum-j-k)); } else if(k-a[i]>=0&&dp[j][k-a[i]]){ dp[j][k]=1; ans=max(ans,fun(j,k,sum-j-k)); } } printf("%d\n",ans==0?-1:(int)(ans*100)); } return 0;}
0 0
- 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背包)
- poj 1948 Triangular Pastures 二维背包
- WAVE格式
- CameraSurfaceView——Android Camera使用详解
- js实验2.(4)AJAX的GET
- 简单常用滤波算法C语言实现
- 编程之法--字符串包含
- poj 1948 Triangular Pastures
- 动态规划练习一之采药
- 世界坐标转换为NGUI坐标办法举例
- 克隆二叉树
- 数论 欧几里得
- Netpref Test的使用
- 插入排序&希尔排序—思路及实现
- 使用阻塞队列实现生产者-消费者模式——Java实现
- 一篇SSM框架整合友好的文章(二)