• Uva 1331


    题目大意:依照顺时针或者逆时针的顺序给出多边的点,要将这个多边形分解成n-2个三角形,要求使得这些三角行中面积最大的三角形面积尽量小,求最小值。

    思路:用区间DP能够非常方便解决,多边形可能是凹边形,注意剖分的三角形必须在多边形内部,所以能够去掉剖分的三角形中包括其它点,可是其它的在多边形外部的三角形没想到其它方法去除。却ac了,不懂为何

    //	Accepted	C++	0.042
    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    using namespace std;
    #define inf 0x3f3f3f3f
    const double esp = 1e-6;
    int n;
    struct point
    {
        double x,y;
    
    }poi[55];
    double dp[55][55];
    double area(point a,point b,point c)
    {
        return fabs((b.x - a.x) * (c.y - a.y) - (c.x - a.x) * (b.y - a.y)) / 2.0 ;
    }
    bool judge(int a,int b,int c)
    {
        for(int i = 1;i<=n;i++ )
        {
            if(i==a||i==b||i==c) continue;
            double s=area(poi[i],poi[a],poi[b])+area(poi[i],poi[b],poi[c])+area(poi[i],poi[c],poi[a]);
            if(fabs(s-area(poi[a],poi[b],poi[c]))<esp) return true;
        }
        return false;
    }
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            memset(dp,0,sizeof(dp));
            scanf("%d",&n);
            for(int i=1;i<=n;i++)
            {
                scanf("%lf%lf",&poi[i].x,&poi[i].y);
            }
            for(int l=2;l<n;l++)
                for(int p=1;p+l<=n;p++)
                {
                    dp[p][p+l]=inf;
                    for(int k=p+1;k<p+l;k++)
                    {
                        if(judge(p,k,p+l)) continue;
                        dp[p][p+l]=min(dp[p][p+l],max(max(dp[p][k],dp[k][p+l]),area(poi[p],poi[k],poi[p+l])) );
                    }
                }
            printf("%.1f
    ",dp[1][n]);
        }
        return 0;
    }
    


  • 相关阅读:
    jsp get参数乱码问题
    oracle 列相减——(Oracle分析函数Lead(),Lag())
    js获取本机id
    java mar --->JSONArray.fromObject
    五级菜单
    15 Spring Boot Shiro 验证码
    13 Spring Boot Shiro使用JS-CSS-IMG
    8:Spring Boot中thymeleaf模板中使用 Shiro标签
    8:Spring Boot Shiro记住密码
    阿里巴巴的阿里云中央仓库
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/6867137.html
Copyright © 2020-2023  润新知