蓝桥杯2022年第十三届决赛真题-围栏(求凸多边形的面积)

news2024/9/21 16:46:08

题目描述

这天,小明在造围栏。

他提前在地上 (二维平面) 打好了 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;i<n;i++){
			x[i] = sc.nextInt();
			y[i] = sc.nextInt();
		}
		long res=0;
		for(int k=2;k<n-2;k++){
			for(int i=0;i<n;i++){
				for(int j=i+k;j<n;j++){
					for(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();
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/13027.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【linux】软件管理

linux软件管理 文章目录linux软件管理桥接模式下配置虚拟机连接互联网nmcli相关命令windows和linux之间的FTPlinux中的软件包类型rpm相关命令搭建本地软件仓库测试本地仓库重新挂载仓库到http服务器上设置仓库镜像开机自动挂载dnf相关命令配置EPEL&#xff08;Extra Packages f…

学生个人网页设计作品:旅游网页设计与实现——成都旅游网站4个页HTML+CSS web前端网页设计期末课程大作业 学生DW静态网页设计 学生个人网页设计作品

&#x1f468;‍&#x1f393;静态网站的编写主要是用 HTML DⅣV CSSJS等来完成页面的排版设计&#x1f469;‍&#x1f393;&#xff0c;一般的网页作业需要融入以下知识点&#xff1a;div布局、浮动定位、高级css、表格、表单及验证、js轮播图、音频视频Fash的应用、uli、下拉…

【YSYY】DSPE-PEG-Transferrin;DSPE-PEG-TF转铁蛋白的主动靶向介绍;磷脂-聚乙二醇-转铁蛋白

产品简称&#xff1a;DSPE-PEG-Transferrin&#xff1b;DSPE-PEG-TF 中文名称&#xff1a;磷脂-聚乙二醇转铁蛋白 产品全称&#xff1a; 1,2-dipalmitoyl-sn-glycero-3-phosphoethanolamine-N-(polyethylene glycol)-Transferrin 产品外观&#xff1a;白色固体 结 构 式&a…

Kubernetes NUMA 感知

TopologyManager TopologyManager 在1.18版本中处于 Beta 状态&#xff0c;该功能支持 CPU 和外围设备&#xff08;例如 SR-IOV VF 和 GPU&#xff09;的 NUMA 对齐&#xff0c;使工作负载能够在针对低延迟优化的环境中运行。 在引入 TopologyManager 之前&#xff0c;CPU 和…

2022-11-17 更高效的Cascades优化器 - Columbia Query Optimizer

在较早的文章中介绍了些Volcano/Cascades优化器框架的设计理念和实现思路&#xff0c;基本是基于论文的解读: https://zhuanlan.zhihu.com/p/364619893 https://zhuanlan.zhihu.com/p/365085770 虽然cascades号称目前最为先进的优化器搜索框架&#xff0c;但不得不说这2篇pa…

ZNS SSD是否真的前途一片光明?

引言 在上次存储随笔更新了一篇ZNS相关的文章“炙手可热的ZNS SSD将会为数据中心带来什么&#xff1f;”以后&#xff0c;在存储圈也一度引发关注。某公司相关同学也在朋友圈疯狂转发&#xff0c;让一些朋友误以为是存储随笔专为某公司写的技术推广软文。 借这个机会在这里再次…

【算法100天 | 20】有环/无环链表的相交问题(Java实现)

若两个链表相交&#xff0c;请返回相交的第一个节点。 给定两个有可能有环也有可能无环的单链表&#xff0c;头节点head1和head2。 实现一个函数&#xff0c;如果两个链表相交&#xff0c;请返回相交的第一个节点&#xff08;从这个节点开始&#xff0c;后续结构都一样&#…

Leetcode-每日一题792. 匹配子序列的单词数(分桶)

题目链接&#xff1a;https://leetcode.cn/problems/number-of-matching-subsequences/description/ 思路 方法一、分桶 题目意思&#xff1a;给你一个字符串 s 和字符串数组 words&#xff0c; 可以对字符串 s 某些位置上的字符进行删除&#xff0c;并不改变原来的字符顺序…

什么是SIMD?

为了提高 CPU 指令处理数据的能力&#xff0c;半导体厂商在 CPU 中推出了一些可以同时并行处理多个数据的指令 ——SIMD指令。 百度百科定义为&#xff1a; SIMD全称Single Instruction Multiple Data&#xff0c;单指令多数据流&#xff0c;能够复制多个操作数&#xff0c;并…

新库上线 | CnOpenData中国核酸检测机构及采样点数据

中国核酸检测机构及采样点数据 一、数据简介 2020年1月21日&#xff0c;国家卫健委发布1号公告&#xff0c;将新型冠状病毒感染的肺炎纳入《中华人民共和国传染病防治法》规定的乙类传染病&#xff0c;并采取甲类传染病的预防、控制措施。目前&#xff0c;新型冠状病毒肺炎防控…

Ubuntu20.04安装c++版本的OpenCV

文章目录参考资料1. 安装步骤1.1 仅构建核心模块1.2 构建含有opencv_contrib的版本2. 安装过程碰到的问题2.1 编译opencv时&#xff0c;卡在IPPICV参考资料 https://www.jianshu.com/p/3c2fc0da7398https://docs.opencv.org/4.5.3/d7/d9f/tutorial_linux_install.htmlhttps://…

SpringBoot+Vue实现前后端分离的社区疫情防控管理系统

文末获取源码 开发语言&#xff1a;Java 使用框架&#xff1a;spring boot 前端技术&#xff1a;JavaScript、Vue.js 、css3 开发工具&#xff1a;IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库&#xff1a;MySQL 5.7/8.0 数据库管理工具&#xff1a;phpstudy/Navicat JD…

[附源码]java毕业设计昆明市人民医院血库管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

vim的基本操作

文章目录vim是什么vim的模式命令/普通模式&#xff08;Normal mode)移动光标上下左右其余移动光标文本操作**进入替换模式&#xff1a;shiftrR**插入模式&#xff08;insert mode&#xff09;底行模式&#xff08;last list mode)vim的配置vim一键配置vim是什么 简单理解&…

【附源码】计算机毕业设计JAVA仁爱公益网站

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis Maven Vue 等等组成&#xff0c;B/…

plt.plot

画点&#xff1a; 1&#xff0c;加一个参数 o&#xff0c;即画点。会根据列表自动设置为x坐标 plt.plot([1,5,3,4,5],"o")2&#xff0c;也可设置多个坐标

985 博士真的会舍弃华为年薪接近 100 万 offer,去选择年薪 20 万的公务员吗?

第一&#xff1a;从某脉软件上来看&#xff0c;大部分会选择进入事业单位&#xff0c;这是大部分人内心想法的真实写照&#xff0c;还仅仅只是口嗨呢&#xff1f; 第二&#xff1a;按道理来说&#xff0c;能读完博士应该是在某一个领悟有自己独特的见解&#xff0c;以个人发展…

JavaSE之注解

目录注解的属性类型元注解注解解析模拟junit最后注解的属性类型 注解只能存放简单的数据 如&#xff1a; 基本数据类型 String Class 注解 枚举 以上类型的一维数组 格式&#xff1a; public interface 注解名称 { public 属性类型 属性名(); } public interface MyAn1 {…

拼搏半个月,刷了 571道Java高频面试题喜提阿里 offer

今年较往年相比面试要难的多&#xff0c;大环境也是对于程序员的要求越来越高&#xff0c;环境是我们无法改变的&#xff0c;我们能改变的只有自己&#xff0c;月初我一好友&#xff0c;努力拼搏一周&#xff0c;刷完了这份阿里 P8 大牛整理的这 571 道 Java 高频面试题笔记&am…

Node.js | Express+MongoDB 实现简易用户管理系统(三)(登录验证之CookieSession)

&#x1f9d1;‍&#x1f4bc; 个人简介&#xff1a;一个不甘平庸的平凡人&#x1f36c; &#x1f5a5;️ 本系列专栏&#xff1a;Node.js从入门到精通 &#x1f5a5;️ TS知识总结&#xff1a;十万字TS知识点总结 &#x1f449; 你的一键三连是我更新的最大动力❤️&#xff0…