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  5010int 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\n",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;
}

转载于:https://www.cnblogs.com/hate13/p/4160751.html

[Swustoj 24] Max Area相关推荐

  1. [Leetcode] Max Area of Island 最大岛屿面积

    Max Area of Island 最新更新请见:https://yanjia.me/zh/2019/02/... Given a non-empty 2D array grid of 0's an ...

  2. C#LeetCode刷题之#695-岛屿的最大面积( Max Area of Island)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3736 访问. 给定一个包含了一些 0 和 1的非空二维数组 gr ...

  3. [swift] LeetCode 695. Max Area of Island

    Given a non-empty 2D array grid of 0's and 1's, an island is a group of 1's (representing land) conn ...

  4. LeetCode 695. Max Area of Island

    LeetCode 695. Max Area of Island Given a non-empty 2D array grid of 0's and 1's, an island is a grou ...

  5. LeetCode - 695. Max Area of Island (Java)

    R.C记录矩阵行列 可以将邻接矩阵转为邻接表来做,即要将二维数组转换为一维数组: 将二维坐标转化为一维坐标: V = x * C + y 若将一维坐标转化为二维坐标: x = V / C y = V ...

  6. LeetCode 695 Max Area of Island

    题目: Given a non-empty 2D array grid of 0's and 1's, an island is a group of 1's (representing land) ...

  7. leetcode 695. Max Area of Island | 695. 岛屿的最大面积(DFS)

    题目 https://leetcode.com/problems/max-area-of-island/ 题解 class Solution {int M, N;public int maxAreaO ...

  8. LeetCode 695. Max Area of Island javascript解决方案

    题意: 寻找最大岛. leetcode.com/problems/ma- 传入: [[0,0,1,0,0,0,0,1,0,0,0,0,0],  [0,0,0,0,0,0,0,1,1,1,0,0,0], ...

  9. Leetcode695.Max Area of Island岛屿的最大面积

    给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合.你可以假设二维矩阵的四个边缘都被水包围着. 找到给定的二维数组中 ...

最新文章

  1. linux开发神器--Tmux
  2. oracle中resource权限,Oracle内置角色connect与resource的权限
  3. 软件需求与分析极简总结
  4. Cisco无线AP上联口为trunk时无法注册故障处理
  5. 【HDU - 1266 】Reverse Number(模拟,数字分位数处理)
  6. PostgreSQL 分页——示例
  7. Redis工作笔记-Jedis的基本使用
  8. 前端小秘密系列之闭包
  9. linux java new date_Linux java Tomcat 项目中 new Date 获取时间 8小时 时差
  10. 查找某组织下子库存与物料信息
  11. node的module.exports和exports
  12. IBM WebSphere构建智慧世界的六大策略
  13. linux 查看登录记录,Linux查看用户登陆历史记录
  14. 零基础新手如何自学PS
  15. c语言中20的倍数为真,0723-0802 C语言笔记(李明杰前8天)
  16. android sdk版本8.0,把targetSdkVersion设置为26(Android 8.0)需要注意的地方
  17. NYOJ_613_免费馅饼
  18. 换发型特效怎么制作?建议收藏这些方法
  19. 法外之徒第一季/全集Braquo迅雷下载
  20. html如何发送验证码到手机,页面效果,给手机发送验证码

热门文章

  1. 华为交换机接口允许vlan通过_VLAN工作原理之TRUNK:控制允许通过的VLAN(Allowed List)...
  2. html模板里处理数组,HTML模板 - 散列数组
  3. ssl charles 参数看不到_偷偷告诉你Charles的秘密
  4. 常用连续型分布介绍及R语言实现
  5. python爬虫作业帮_【Python爬虫】01作业
  6. indesign里怎么打根号_三相电是如何产生的?怎么接线?
  7. 网络中计算机传输信息时所遵从的不同规则,2012年上海市高中学业水平考试信息科技试卷(第6套)...
  8. html怎么保存曲奇,曲奇烘焙不可不知的小技巧,烘焙出绝对赞的口感!
  9. hive -e执行命令报错
  10. SparkStreaming读取本地文件进行wordCount