首页 > 编程知识 正文

向量计算三角形面积,已知向量求三角形面积

时间:2023-05-03 09:15:04 阅读:257333 作者:2113

题目链接:Minimal Area

题意:按逆时针给你凸多边形的所有点,让你选三个点使得得到的三角形面积最小。

思路:不难证明相邻的三个点是面积最小的,然后叉乘直接计算取最小值就可以。

#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<cmath>#include<algorithm>#include<queue>#include<stack>#include<vector>#include<map>#include<set>#define inf 0x3f3f3f3f3f3f3f3fusing namespace std;typedef long long ll;const int N = 200010;struct node{ ll x, y;} s[N];int main(){ ll n; scanf("%lld", &n); for(int i = 0; i < n; i++) { scanf("%lld %lld", &s[i].x, &s[i].y); } ll ans = inf; for(int i = 0; i < n; i++) { ll x1 = s[(i-1+n)%n].x-s[(i-2+n)%n].x; ll y1 = s[(i-1+n)%n].y-s[(i-2+n)%n].y; ll x2 = s[i].x-s[(i-1+n)%n].x; ll y2 = s[i].y-s[(i-1+n)%n].y; ll now = abs(x1*y2-x2*y1); ans = min(ans, now); } printf("%lldn", ans); return 0;}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。