zoukankan      html  css  js  c++  java
  • JNU周练1026

    CodeForces 340B

    题意:给出n个点(无重点,无三点共线),选四个点组成平面四边形,求所能组成的四边形的最大面积。 (n<=300)

    枚举四边形的对角线,再枚举每个点,左右各选最远的点组成两个三角形,形成一个最大四边形。

    #include <iostream>
    #include <iomanip>
    #include <algorithm>
    using namespace std;

    #define N 310

    struct Point
    {
        double x, y;
    }p[N];

    double xmult(Point p0, Point p1, Point p2)
    {
        return (p1.x - p0.x) * (p2.y - p0.y) - (p2.x-p0.x) * (p1.y - p0.y);
    }

    int main()
    {
        int n;
        double ans = 0;
        cin >> n;
        for(int i=0; i<n; i++)
            cin >> p[i].x >> p[i].y;

        for(int i=0; i<n-1; i++)
        {
            for(int j=i+1; j<n; j++)
            {
                double a1 = 0, a2 = 0;
                for(int k=0; k<n; k++)
                {
                    double tmp = xmult(p[i],p[j],p[k]);
                    if(tmp>0)
                        a1 = max(a1, tmp);
                    else
                        a2 = min(a2, tmp);
                }
                a2 = -a2;
                if(a1!=0 && a2!=0 && (a1+a2)/2>ans)
                {
                    ans = (a1+a2)/2;
                    //cout << a1 / 2 << " " << a2 / 2 << endl;
                }
            }
        }
        cout << setprecision(10) << ans << endl;
        return 0;
    }
    View Code 
  • 相关阅读:
    队列安排
    杂物
    最大数
    牛券
    斐波那契数列 !有疑惑
    方格取数
    阶乘之和-魏国
    过河卒
    二分查找算法(转)
    求整数的二进制表示中1的个数 (转)
  • 原文地址:https://www.cnblogs.com/byluoluo/p/3389596.html
Copyright © 2011-2022 走看看