http://acm.hdu.edu.cn/showproblem.php?pid=5135

题意:给你N个木棍的长度,然后让你组成三角形,问你组成的三角形的和最大是多少?

思路:先求出可以组成的所有的三角形,然后状压dp就可以。求所有的三角形也可以用状压,也可以三重循环求。

 #include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#define maxn 1<<13
using namespace std; int n;
int a[];
int b[];
int cc[maxn];
double ss[maxn];
double ans;
double dp[maxn]; bool vis[]; int main()
{
while(scanf("%d",&n)!=EOF)
{
if(n==) break;
memset(cc,,sizeof(cc));
memset(dp,,sizeof(dp));
memset(ss,,sizeof(ss));
for(int i=; i<n; i++)
{
scanf("%d",&a[i]);
}
int t1=;
for(int i=; i<(<<n); i++)
{
memset(b,,sizeof(b));
int cnt=;
for(int j=; j<n; j++)
{
if((<<j)&i) cnt++;
}
if(cnt==)
{
int c=;
for(int j=; j<n; j++)
{
if((<<j)&i)
{
b[c++]=a[j];
}
}
if((b[]<b[]+b[])&&(b[]<b[]+b[])&&(b[]<b[]+b[]))
{
cc[t1]=i;
double p=(double)((b[]+b[]+b[])*1.0/);
double s=sqrt(p*(p-b[]*1.0)*(p-b[]*1.0)*(p-b[]*1.0));
ss[t1++]=s;
}
}
}
double ans=;
for(int i=; i<(<<n); i++)
{
for(int j=; j<t1; j++)
{
if((i&(cc[j]))==)
{
dp[i|cc[j]]=max(dp[i|cc[j]],dp[i]+ss[j]);
ans=max(ans,dp[i|cc[j]]);
}
}
}
printf("%.2lf\n",ans);
}
return ;
}

hdu 5135 Little Zu Chongzhi's Triangles的更多相关文章

  1. [HDU 5135] Little Zu Chongzhi's Triangles (dfs暴搜)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5135 题目大意:给你n条边,选出若干条边,组成若干个三角形,使得面积和最大.输出最大的面积和. 先将边 ...

  2. HDU 5135.Little Zu Chongzhi's Triangles-字符串 (2014ACM/ICPC亚洲区广州站-重现赛)

    Little Zu Chongzhi's Triangles Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 512000/512000 ...

  3. Little Zu Chongzhi's Triangles

    Little Zu Chongzhi's Triangles Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 512000/512000 ...

  4. hdu5135 Little Zu Chongzhi's Triangles

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Others) Total Submissi ...

  5. UVALive 7077 - Little Zu Chongzhi's Triangles(暴力)

    https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...

  6. UVALive 7077 Little Zu Chongzhi's Triangles (有序序列和三角形的关系)

    这个题--我上来就给读错了,我以为最后是一个三角形,一条边可以由多个小棒组成,所以想到了状态压缩各种各样的东西,最后成功了--结果发现样例过不了,三条黑线就在我的脑袋上挂着,改正了以后我发现N非常小, ...

  7. HDU5131-Song Jiang's rank list HDU5135-Little Zu Chongzhi's Triangles(大佬写的)

    Song Jiang's rank list Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java ...

  8. URAL 7077 Little Zu Chongzhi's Triangles(14广州I)

    题目传送门 题意:有n根木棍,三根可能能够构成三角形,选出最多的三角形,问最大面积 分析:看到这个数据范围应该想到状压DP,这次我想到了.0010101的状态中,1表示第i根木棍选择,0表示没选,每一 ...

  9. hdu 5135(2014广州—状态dp)

    t题意:给你n条边,构造任意个三角形,一个三角形恰好只用3条边,每条边只能一次,求面积最大值 思路: 最开始想的是先排序从大到小取,但感觉并不怎么靠谱. 最多12条边,所以可以求出所有可能的三角形面积 ...

随机推荐

  1. zTree实现地市县三级级联报错(一)

    zTree实现地市县三级级联 1.详细报错例如以下: java.lang.IllegalStateException: Failed to load ApplicationContext at org ...

  2. 利用ssh传输文件 分类: 服务器搭建 Raspberry Pi 2015-04-12 18:47 58人阅读 评论(0) 收藏

    在linux下一般用scp这个命令来通过ssh传输文件. 1.从服务器上下载文件 scp username@servername:/path/filename /var/www/local_dir(本 ...

  3. 支持MySql的数据库自动分表工具DBShardTools发布

    支持MySql的数据库自动分表工具DBShardTools发布 前段时间参与了公司的一个项目,这个项目的特点是数据量.访问量都比较大,考虑使用数据库水平分表策略,Google了大半天,竟然没有找到分表 ...

  4. python装饰实现线程同步

    import threading def tryfinally(finallyf):   u"returns a decorator that adds try/finally behavi ...

  5. qt 学习之路 :QML 语法

    前面我们已经见识过 QML 文档.一个 QML 文档分为 import 和对象声明两部分.如果你要使用 Qt Quick,就需要 import QtQuick 2.QML 是一种声明语言,用于描述程序 ...

  6. date和long的相互转换

    import java.text.SimpleDateFormat; import java.util.Date; public class T { public static void main(S ...

  7. ES6数组去重

    今天五一,在出去玩之前赶紧写篇博客,时刻不要忘记学习^_^!! 提到数组去重,想必大家都不陌生,会的同学可能噼里啪啦写出好几个,下面来看看之前常见的去重代码: 'use strict'; var ar ...

  8. HTML5 文件域+FileReader 读取文件(二)

    一.读取文本文件内容,指定字符编码 <div class="container"> <!--文本文件验证--> <input type="f ...

  9. asp.net数据导出到excel表格,并设置表格样式

    1.首先在项目中添加引用

  10. OpenWrt启动过程分析

    openwrt是通过一系列shell脚本进行启动流程的组织,下面是启动流程的提纲.如 果想详细了解启动的过程,则需要仔细走读脚本文件. 1. 在make menuconfig 选择target平台 B ...