计蒜客——圈果树

传送门

小马承包了一个果园,想修一个围栏,但是不希望砍掉任何的果树。对于给出的所有的果树的坐标,计算一下最小的围住所有的果树的围栏的长度。

输入数据的第一行包括一个整数 N(0≤ N ≤10,000)表示农夫约翰想要围住的放牧点的数目。接下来 N 行,每行由两个由空格分隔的实数组成,Xi 和 Yi,对应平面上的放牧点坐标(-1,000,000 ≤ Xi,Yi ≤ 1,000,000)。数字用小数表示。

输出包括一个实数,表示必须的围栏的长度(保留两位有效小数)

 

样例输入

4
4 8
4 12
5 9.3
7 8

样例输出

12.00

本题特别注意n<3的情况

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int maxn = 10005;
struct spe
{
    double x,y;
}A[maxn],S[maxn];
bool cmp(spe a,spe b)
{
    if(a.x!=b.x)
        return a.x<b.x;
    return a.y<b.y;
}
double Xmulti(spe a,spe b,spe c)//点积,ab向量*ac向量
{
    return ((b.y-a.y)*(c.x-a.x)-(b.x-a.x)*(c.y-a.y));
}
double dis(spe a,spe b)
{//距离
    return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
int ConvexHull(spe *A,int n,spe *S)
{
    int m = 0;
    for(int i = 0;i < n; i++)
    {
        while(m > 1&&Xmulti(S[m-2],A[i],S[m-1])<=0)
            m--;
        S[m++] = A[i];//更新点
    }
    //顺时针遍历一遍
    int k = m;
    for(int i=n-2; i>=0; i--)
    {
        while(m>k && Xmulti(S[m-2],A[i],S[m-1])<=0)
            m--;
        S[m++] = A[i];
    }
    if(n > 1)
        m--;
    return m;
}

int main()
{
    int n;
    scanf("%d",&n);
    for(int i =0; i < n; i++)
        scanf("%lf%lf",&A[i].x,&A[i].y);
    if(n <= 1)
        printf("0.00\n");
    else if(n == 2)
        {
            printf("%.2lf\n",dis(A[0],A[1]));
        }
        else
        {
            sort(A,A+n,cmp);
            int cnt = ConvexHull(A, n, S);
            double sum = dis(S[0],S[cnt-1]);
            for(int i = 0; i < cnt-1; i++)
                sum+=dis(S[i],S[i+1]);
            printf("%.2lf\n",sum);
        }
    return 0;
}

我觉得凸包(百度百科)解释的很详细,可以先看看,再来做,这只是其中一种算法:Graham扫描法

内容概要:该研究通过在黑龙江省某示范村进行24小时实地测试,比较了燃煤炉具与自动/手动进料生物质炉具的污染物排放特征。结果显示,生物质炉具相比燃煤炉具显著降低了PM2.5、CO和SO2的排放(自动进料分别降低41.2%、54.3%、40.0%;手动进料降低35.3%、22.1%、20.0%),但NOx排放未降低甚至有所增加。研究还发现,经济性和便利性是影响生物质炉具推广的重要因素。该研究不仅提供了实际排放数据支持,还通过Python代码详细复现了排放特征比较、减排效果算和结果可视化,进一步探讨了燃料性质、动态排放特征、碳平衡算以及政策建议。 适合人群:从事环境科学研究的学者、政府环保部门工作人员、能源政策制定者、关注农村能源转型的社会人士。 使用场景及目标:①评估生物质炉具在农村地区的推广潜力;②为政策制定者提供科学依据,优化补贴政策;③帮助研究人员深入了解生物质炉具的排放特征和技术改进方向;④为企业研发更高效的生物质炉具提供参考。 其他说明:该研究通过大量数据分析和模拟,揭示了生物质炉具在实际应用中的优点和挑战,特别是NOx排放增加的问题。研究还提出了多项具体的技术改进方向和政策建议,如优化进料方式、提高热效率、建设本地颗粒厂等,为生物质炉具的广泛推广提供了可行路径。此外,研究还开发了一个智能政策建议生成系统,可以根据不同地区的特征定制化生成政策建议,为农村能源转型提供了有力支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值