1 条题解
-
0
自动搬运
来自洛谷,原作者为

Jerrlee✅
。搬运于
2025-08-24 22:34:26,当前版本为作者最后更新于2021-11-10 17:02:49,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
题意
给出一个三角形三个顶点的坐标以及 个点 的坐标,求这个三角形的面积和在这 个点中,有多少个点在这个三角形内部及边界上。
思路
三角形面积的公式已经给出了:,所以我们只需要找到一种方法来检查输入的点 是否在三角形
ABC内。有一种方法可以满足题意,就是只计算三角形的面积。更准确地说,当且只有 在
ABC内时,三角形ABP、ACP和BCP的面积之和等于ABC的面积。代码
#include<cstdio> struct pt{ int x,y; //定义点的坐标结构体 }; int area(pt a,pt b,pt c){ //计算面积 int t=a.x*(b.y-c.y)+b.x*(c.y-a.y)+c.x*(a.y-b.y); if(t<0) return -t; //面积非负 else return t; } int main(){ pt a,b,c; scanf("%d%d%d%d%d%d",&a.x,&a.y,&b.x,&b.y,&c.x,&c.y); int n,ans=0; scanf("%d",&n); for(int i=0;i<n;i++){ pt p; scanf("%d%d",&p.x,&p.y); if(area(a,b,p)+area(a,c,p)+area(b,c,p)==area(a,b,c)) ans++; //判断面积是否相等 } printf("%.1lf\n%d\n",area(a,b,c)/2.0,ans); //代入公式 }
- 1
信息
- ID
- 7216
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者