LG2785 物理1(phsic1)- 磁通量

题目大意

这是一道神奇的题目……

我看了半天,发现有这样一句话:
图片.png(ΩДΩ)

反正就是求一个多边形的面积,再乘上一个数即可。

思路

如果是凸多边形的话,我们可以将其分成许多个三角形计算。

我们知道三角形的面积等于向量外积的绝对值的一半

这是因为平行四边形的面积在数值上等于两边的向量的外积。

但是还有凹多边形的情况,我们想想后会发现,有的外积是正的,有的是负的,它们正好可以把多余的部分抵消!

代码

一不小心写长了……

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct point{double x,y;}p[100005];
int n;
double ans,b;
inline double cj(point a1,point a2,point b1,point b2){
return (a2.x-a1.x)*(b2.y-b1.y)-(b2.x-b1.x)*(a2.y-a1.y);
}//外积
int main(){
scanf("%d%lf",&n,&b);
for(int i=1;i<=n;i++)
scanf("%lf%lf",&p[i].x,&p[i].y);//输入
for(int i=2;i<=n-1;i++)
ans+=cj(p[1],p[i],p[1],p[i%n+1]);
printf("%.4lf\n",fabs(ans*b/2.));//最后再求绝对值
return 0;
}