这个题……我上来就给读错了,我以为最后是一个三角形,一条边可以由多个小棒组成,所以想到了状态压缩各种各样的东西,最后成功了……结果发现样例过不了,三条黑线就在我的脑袋上挂着,改正了以后我发现N非常小,想到了回溯每个棍的分组,最多分5组,结果发现超时了……最大是5^12 =  244,140,625,厉害呢……

  后来想贪心,首先想暴力出所有可能的组合,结果发现替换问题是一个难题……最后T T ,我就断片了。。

  等看了别人的办法以后,我才发现我忽视了三角形的特性,和把数据排序以后的特点。 如果数据从大到小排序为 a,b,c,d,e...会发现这样一个特点,a+b>c,a+c>b,这样一来组合成三角形的唯一条件就是b+c>a,同时也发现是a以后的任意两个数的和都不会大于b+c,所以只要b+c不行,后面的都不可以。如果b+c可以,那么他就是最好的选择,因为后面的任意一对都不可能组合成比a,b,c面积更大的三角形。所以这个题就很清晰了,i只能和i+1和i+2组合为三角形。也可以把这个题归为贪心,也是因为他确实具有贪心的特性,不过更多的是应用有序序列和三角形的关系。

  受这个题的影响,我想起了在2016CCPC长春站做过的一道题,给出一个1-n的序列,求出最少去掉多少个数使其不能构成三角形。这样一来这个序列就是从小到大拍的,a,b,c,d,e,首先b+c>a,a+c>b,所以只要满足a+b>c就可以构成三角形,所以应该尽量避免这样的情况产生,处理方法为,去掉满足这样情况的c,为什么去c,不去a和b呢,因为要把尽量小的数留下来,最后会发现,留下的是1,2,3,5,8...的斐波那契数列。

  代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<cmath>
#include<vector>
#include<algorithm>
using namespace std;
#define N 13
int stick[N],n;
bool cmp(int a,int b)
{
return a > b;
}
bool ok(int i,int j,int k){
return stick[j]+stick[k]>stick[i];
}
double Get_area(int a,int b,int c)
{
double p = (a+b+c)/2.0;
return sqrt(p*(p-a)*(p-b)*(p-c));
}
int main()
{
// freopen("I.in.cpp","r",stdin);
double ans;
while(~scanf("%d",&n))
{
if(n == ) break;
for(int i = ; i < n; i++)
{
scanf("%d",&stick[i]);
}
sort(stick,stick+n,cmp);
ans = ;
for(int i = ; i < n-; i++)
{
if(ok(i,i+,i+))
{
ans += Get_area(stick[i],stick[i+],stick[i+]);
i += ;
}
}
printf("%.2f\n",ans);
}
return ;
}

UVALive 7077 Little Zu Chongzhi's Triangles (有序序列和三角形的关系)的更多相关文章

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

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

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

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

  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. [HDU 5135] Little Zu Chongzhi's Triangles (dfs暴搜)

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

  6. hdu 5135 Little Zu Chongzhi's Triangles

    http://acm.hdu.edu.cn/showproblem.php?pid=5135 题意:给你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. 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 ...

  9. 2-13. 平均两个有序序列(25)(ZJU_PAT 名单 | 排列 )

    主题链接:http://pat.zju.edu.cn/contests/ds/2-13 已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数.有序序列A0, A1-AN-1的中位 ...

随机推荐

  1. Excel的 OleDb 连接串的格式(Provider=Microsoft.ACE.OLEDB)

    string strCon = "Provider=Microsoft.ACE.OLEDB.12.0;data source=" + filePath + ";Exten ...

  2. wpf 遍历listview 时 传入指定类型 得到指定类型控件info

    private ChildType FindVisualChild<ChildType>(DependencyObject obj) where ChildType : Dependenc ...

  3. Process Monitor V2.96 (系统监视工具) 汉化免费绿色版

    软件名称: Process Monitor V2.96 (系统监视工具) 汉化免费绿色版软件语言: 简体中文授权方式: 免费软件运行环境: Win7 / Vista / Win2003 / WinXP ...

  4. js将xml对象,xml文件解析成xml dom对象,来对对象进行操作

    由于ie与其他的浏览器对于xml文件的解析方式不同,所以有不同的解析方式 1.1 IE解析xml文件的方式 var xmlDoc=new ActiveXObject("Microsoft.X ...

  5. Django ORM操作

    ORM 常用操作进阶操作 #!/usr/bin/env python #_*_ coding:utf8 _*_ from __future__ import unicode_literals from ...

  6. 关于最新版本的log4net使用中遇到的问题

    Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中.它提供了巨大的灵活性而不牺牲 ...

  7. {java学习}[第一章]软件开发概述(2017.1.11).

  8. dao代码模板

    提供数据源以及回收资源的工具类DbUtils: public class DbUtils { private static ComboPooledDataSource dataSource = new ...

  9. SimpleDateFormat类

    /* * DateFormat类概述 * DateFormat是日期时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间 * 是抽象类,所以使用其子类SimpleDateFormat * ...

  10. http验证CertificateValidation

    private void btnopenURL_Click(object sender, EventArgs e) { string strUrl = txtopenURL.Text.Trim(); ...