当前位置: 首页 > news >正文

P1183 多边形的面积【洛谷算法习题】

P1183 多边形的面积

网页链接

P1183 多边形的面积

题目描述

给出一个没有缺口的简单多边形,它的边是垂直或者水平的,要求计算多边形的面积。

多边形被放置在一个x O y xOyxOy的笛卡尔平面上,它所有的边都平行于两条坐标轴之一。然后按逆时针方向给出各顶点的坐标值。所有的坐标值都是整数,因此多边形的面积也为整数。

注意:可能存在连续的三个顶点在一条直线上的情况

输入格式

第一行给出多边形的顶点数n nn

接下来n nn行,每行给出多边形一个顶点的坐标值x xxy yy,用空格隔开。

顶点按逆时针方向逐个给出。多边形最后是靠从最后一个顶点到第一个顶点画一条边来封闭的。

输出格式

一行,一个整数,表示多边形的面积。

输入输出样例 #1

输入 #1

10 0 0 4 0 4 1 3 1 3 3 2 3 2 2 1 2 1 3 0 3

输出 #1

9

说明/提示

对于100 % 100\%100%的数据,1 ≤ n ≤ 100 1 \le n \le 1001n100− 200 ≤ x , y ≤ 200 -200 \le x,y \le 200200x,y200

解题思路

本题核心是鞋带公式求解简单多边形面积,适配题目中水平/垂直边、逆时针顶点的条件。鞋带公式是计算任意简单多边形面积的通用方法:将所有顶点按顺序存储,最后把终点与起点闭合,遍历计算每一组相邻顶点的叉乘和x i y i + 1 − x i + 1 y i x_i y_{i+1} - x_{i+1} y_ixiyi+1xi+1yi,将总和取绝对值后除以2,即为多边形面积。题目明确面积为整数,直接取整输出即可。该公式自动忽略连续共线顶点,无需额外处理,计算过程仅需线性遍历顶点,时间复杂度O ( n ) O(n)O(n),简洁高效且精准。

总结

核心逻辑:使用鞋带公式,通过顶点坐标叉乘和计算多边形面积。
关键操作:闭合顶点序列、累加叉乘项、取绝对值减半后取整。
效率保障:线性遍历计算,公式简洁,自动处理共线顶点,适配题目数据范围。

代码内容

#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefunsignedlonglongull;typedefvector<vector<ll>>vvt;typedefpair<ll,ll>pll;constll N=1e3+10;constll p=1e9+7;constll INF=1e18;constll M=1e6+10;doublea[105][2];doubleans=0;intmain(){ll n;cin>>n;for(ll i=0;i<n;i++)cin>>a[i][0]>>a[i][1];a[n][0]=a[0][0],a[n][1]=a[0][1];for(ll i=0;i<n;i++)ans+=0.5*(a[i][0]*a[i+1][1]-a[i][1]*a[i+1][0]);ll a=ans;cout<<a<<endl;return0;}
http://www.jsqmd.com/news/684814/

相关文章:

  • 软件测试工程师简历项目经验怎么写?1000套简历模板告诉你答案
  • 机器学习中三种均值方法的原理与应用场景
  • 如何免费延长JetBrains IDE试用期:IDE Eval Resetter完整使用教程
  • Docker医疗配置的“隐形雷区”:DICOM协议栈、HL7 v2.x时区处理与FHIR R4资源版本冲突(三甲信息科绝密排查手册)
  • SQL中窗口函数使用注意事项_避免潜在的数据陷阱
  • HarmonyOS6 ArkTS TextArea组件使用文档
  • 我开起来已经是一个全栈开发者
  • 别再手动建模了!3DMAX 2011+ 用户必看:这个螺母螺栓插件,5分钟搞定标准件
  • 超越Pandas:7种高效大数据处理技术对比
  • 基于vue的宏图企业档案资料管理系统[vue]-计算机毕业设计源码+LW文档
  • Go语言怎么做秒杀系统_Go语言秒杀系统实战教程【实用】
  • 为什么你的docker logs命令永远返回空?底层日志驱动架构解密(含containerd+systemd-journald双模式对照表)
  • COMSOL多孔介质流燃烧器模型:四场耦合,多物理场涉及非等温反应流场模拟
  • Qwen3-4B-Thinking真实对话效果:多轮逻辑追问+自我修正能力演示
  • 5分钟掌握KeymouseGo:零编程实现鼠标键盘自动化操作
  • Docker容器在麒麟V10上启动失败?3个内核参数+2个SELinux策略彻底解决国产OS兼容性问题
  • HPH精密构造:三大系统全解析
  • AT32F435 QSPI驱动W25N01G NAND Flash避坑指南:从引脚配置到读写验证的完整流程
  • mysql日志记录开销_InnoDB重做日志对性能的影响
  • 2026乐山口碑装修公司选型全攻略 技术维度深度拆解 - 优质品牌商家
  • 人体活动识别技术:从传感器数据到智能应用
  • Panthor开源驱动实现OpenGL ES 3.1认证的技术突破
  • 基于scikit-learn的手势识别系统开发实践
  • 【企业级Docker沙箱落地白皮书】:从DevSecOps流水线到GDPR合规沙箱的12项硬核检查清单
  • 为什么你的EF Core 10向量查询比原生SQL慢47倍?——基于IL重写与Span<T>向量化执行的底层优化白皮书
  • Go语言怎么写注释_Go语言代码注释规范教程【通俗】
  • Phi-3.5-mini-instruct基础教程:多语言对话与代码生成能力验证
  • 量子计算噪声抑制与误差缓解技术解析
  • 【数组结构与算法分析】一篇搞懂:栈与队列的底层实现原理与接口体系
  • NVIDIA Parabricks v4.2:GPU加速基因组分析技术解析