蓝桥杯2022年第十三届决赛真题-围栏(求凸多边形的面积)
创始人
2024-01-28 22:25:00
0

题目描述

这天,小明在造围栏。

他提前在地上 (二维平面) 打好了 n 个洞,这 n 个洞的位置形成了一个凸多边形。当他准备把固定围栏的木杆插进去的时候,突然发现自己少准备了两根木杆。

在这里插入图片描述
如图,他现在只能在这 n 个洞中选出 n − 2 个来放置木杆,他想知道用这 n − 2 个木杆能围成的凸多边形的最大的面积是多少。

输入格式

输入共 n + 1 行,第一行为一个正整数 n。
后面 n 行,每行两个整数 xi , yi 表示第 i 个洞的坐标。
保证按照逆时针的顺序输入这 n 个点的坐标。

输出格式

一行,一个正整数,表示答案。
为了避免小数,请输出面积的两倍。

样例输入

5
0 0
1 0
2 1
0 3
-1 1

样例输出

6

提示

选择 (−1, 1) (2, 1) (0, 3) 这三个点构成的多边形面积最大,为 3,所以输出 6。
对于 100% 的数据,保证 5 ≤ n ≤ 100;|xi |, |yi | ≤ 1e6。

思路

这个题主要考察如何求凸多边形的面积和动态规划。

求凸多边形的面积:
以一个点为起点,与其他点相连可以得到若干个三角形,至此我们就变成了求这些三角形的面积。
而三角形的面积我们通过向量叉积来求得。
(图片与面积求解代码来源)
在这里插入图片描述
求一个三角形面积
在这里插入图片描述

计算三角形面积 
double getS(Point a,Point b,Point c)    {  return ((b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x)) / 2;   //应用叉积的定义推出的 }计算多边形面积。必须确保 n>=3,且多边形是凸多边形 
double getPS(Point p[], int n)    {double sumS = 0;for(int i = 1; i <= n - 1; i++)sumS += getS(p[1], p[i], p[i + 1]);  // n-2个三角形的面积和return sumS;}

然后再来看这个题,选取n-2个点构成最大面积的多边形。设dp[i][j][k]表示从第i个点开始到第j个点结束(起点为i,终点为j)选取k个点构成凸多变形的最大面积。
然后开始想状态转移方程,从i到j到底选哪些点呢,所以应该从i到j遍历一遍,若遍历到h,因为我们最后一个值为j,所以dp[i][j][k]=dp[i][h][k-1] (意思为从i到h选取k-1个点)+三角形ijh的面积
图解:
下图表示从i到h选取k-1个点的多边形
![在这里插入图片描述](https://img-blog.csdnimg.cn/ad2642794dc741aa80d4fa95c0123e40.png在这里插入图片描述
加上三角形ijh后
在这里插入图片描述
现在就很清楚了。

import java.util.Scanner;
public class Main {public static void main(String[] args) {new Main().solve();}void solve() {Scanner sc = new Scanner(System.in);int n=sc.nextInt();int x[] = new int[n];int y[] = new int[n];long [][][]	dp = new long [n][n][n];for(int i=0;ix[i] = sc.nextInt();y[i] = sc.nextInt();}long res=0;for(int k=2;kfor(int i=0;ifor(int j=i+k;jfor(int h=i;h<=j;h++){dp[i][j][k] = Math.max(dp[i][j][k],dp[i][h][k-1]+Math.abs(((long)(x[j]-x[i])*(y[h]-y[i])-(long)(y[j]-y[i])*(x[h]-x[i]))));res = Math.max(dp[i][j][k],res);}}}}System.out.println(res);sc.close();}
}

相关内容

热门资讯

文秘工作内容 文秘工作内容  文秘分为行政文员、办公室文员、秘书等,不同的职业也不同的工作内容,本文主要为您介绍有...
网络安全教育方案 网络安全教育方案(精选9篇)  为保障事情或工作顺利开展,常常需要提前进行细致的方案准备工作,方案是...
XX公司人事管理制度(2) XX公司人事管理制度(2)pan> 关键词: 评论 文章“XX公司人事管理制度(2)” 1、...
公司应急值班管理制度 公司应急值班管理制度(精选10篇)  在社会发展不断提速的今天,人们运用到制度的场合不断增多,制度一...
通知的格式、写法 通知的格式、写法通知是一种使用范围较广的文体。凡需要特定机关和人员知道、办理的事宜,都可以用通知。但...
陕西省建筑职工大学分类考试招... 陕西省建筑职工大学2016年分类考试招生章程  根据国家教育部和陕西省教育厅有关规定,陕西省建筑职工...
大学生寒假就业实践报告 大学生寒假就业实践报告(精选25篇)  转眼难忘的社会实践生活就已结束了,这段经历,相信你有很多感悟...
责任状 责任状范本  责任状作为一种公共管理手段,上下级就某项工作签订责任状,上级将工作任务布置给下级,下级...
工地施工现场管理制度 工地施工现场管理制度(精选17篇)  在当今社会生活中,大家逐渐认识到制度的重要性,制度一经制定颁布...
创意提案改善制度 创意提案改善制度□ 目 的 ?第一条 为启发全体员工的想像力,集结个人的智慧与经验,提出有利于本公司...
工会财务管理制度 工会财务管理制度范本  在生活中,很多地方都会使用到制度,制度是各种行政法规、章程、制度、公约的总称...
文明的倡议书 关于文明的倡议书15篇  在日常生活和工作中,接触并使用倡议书的人越来越多,倡议书是一种号召性的专用...
生产管理制度 生产管理制度(精选18篇)  制度指一定的规格或法令礼俗。用社会科学的角度来理解,制度泛指以规则或运...
计算机软件管理制度 计算机软件管理制度  在当今社会生活中,很多地方都会使用到制度,制度具有合理性和合法性分配功能。那么...
学校学生考勤的管理制度 学校学生考勤的管理制度(通用5篇)  在快速变化和不断变革的今天,越来越多地方需要用到制度,制度一经...
厨房管理规章制度 厨房管理规章制度  在日新月异的现代社会中,制度使用的情况越来越多,制度是各种行政法规、章程、制度、...
监控录像管理制度 关于监控录像管理制度(通用13篇)  在现在的社会生活中,越来越多人会去使用制度,制度是指在特定社会...
服务管理制度 服务管理制度(精选18篇)  在日新月异的现代社会中,越来越多地方需要用到制度,制度是维护公平、公正...
会议纪要的序号格式 会议纪要的序号格式  会议纪要的编号方法在有关公文规范中都有较明确的规定,但也不是绝对死板的。一般来...
搬迁通知 精选搬迁通知模板(通用15篇)  在充满活力,日益开放的今天,我们都不可避免地要接触到通知,通知是机...