zoukankan      html  css  js  c++  java
  • [Swustoj 24] Max Area

    Max Area

    题目描述:

    又是这道题,请不要惊讶,也许你已经见过了,那就请你再来做一遍吧。这可是wolf最骄傲的题目哦。
    在笛卡尔坐标系正半轴(x>=0,y>=0)上有n个点,给出了这些点的横坐标和纵坐标,但麻烦的是这些点的坐标没有配对好,你的任务就是将这n个点的横坐标和纵坐标配对好,使得这n个点与x轴围成的面积最大。

    输入:

    在数据的第一行有一个正整数m,表示有m组测试实例。接下来有m行,每行表示一组测试实例。每行的第一个数n,表示给出了n个点,接着给出了n个x坐标和y坐标。(给出的x轴的数据不会重复,y轴数据也不会重复)(m<5000,1<n<50)
    如:
    2
    4 x1 x2 x3 x4 y1 y2 y3 y4
    5 x1 x2 x3 x4 x5 y1 y2 y3 y4 y5

    输出:

    输出所计算的最大面积,结果保留两位小数,每组数据占一行。

    样例:

    2
    4 0 1 3 5 1 2 3 4
    6 14 0 5 4 6 8 1 5 6 2 4 3

    15.00
    59.00

    简单贪心、输入数据应该为double、Wa一次。

    思路:画图、整个多边形面积可以划分为n-1个直角梯形的面积之和、将n个x坐标(或y坐标)看做n-1个高,然后面积等于所有(上底+下底)*高/2的和。

    这里直接处理不好处理,展开、然后除了两边、中间的每个底需要乘以相邻两个高,故如样例1:

    则S=(y1*h1 + y2+(h1+h2) + y3*(h2+h3) + y4*h3)/2,y表示纵坐标,即底,h为高。然后排序贪心即可。

    好吧、没说清楚、画下图就知道了。

    #include <iostream>
    #include <algorithm>
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    using namespace std;
    #define N  5010
    
    int n;
    double x[N];
    double y[N];
    double h[N];
    
    void solve()
    {
        int i,j;
        sort(x+1,x+n+1);
        for(i=1;i<=n;i++)
        {
            if(i==1) h[i]=x[i+1]-x[i];
            else if(i==n) h[i]=x[i]-x[i-1];
            else h[i]=x[i+1]-x[i-1];
        }
        sort(h+1,h+n+1);
        sort(y+1,y+n+1);
        double ans=0;
        for(i=1;i<=n;i++)
        {
            ans+=h[i]*y[i];
        }
        printf("%.2f
    ",ans/2.0);
    }
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d",&n);
            for(int i=1;i<=n;i++) scanf("%lf",&x[i]);
            for(int i=1;i<=n;i++) scanf("%lf",&y[i]);
            solve();
        }
        return 0;
    }
    趁着还有梦想、将AC进行到底~~~by 452181625
  • 相关阅读:
    Spring MVC 核心组件详解
    Spring MVC 入门就这一篇
    Spring 事务解决方案
    【UGUI源码分析】Unity遮罩之Mask详细解读
    游戏开发中不同时区下的时间问题
    ARTS第十三周(阅读Tomcat源码)
    Win10 电脑安装.NET低版本提示“这台计算机中已经安装了 .NET Framwork 4.6.2或版本更高的更新”问题
    Dynamics 365 Setup 提示SqlServer 存在
    Dynamics CRM "Verification of prerequisites for Domain Controller promotion failed. Certificate Server is installed."
    Dynamics CRM
  • 原文地址:https://www.cnblogs.com/hate13/p/4160751.html
Copyright © 2011-2022 走看看