[洛谷P2785] 物理1(phsic1)-磁通量
随便翻到的一道题......
这道题是用向量叉积求多边形面积。
首先讲一下向量叉积(也叫外积)。
设两个向量的坐标表示为(x1,y1)、(x2,y2)。
那么它们的叉积为x1*y2-x2*y1。
其几何意义为两个向量所成的平行四边形的面积(浅蓝色部分)。

两个向量的叉积与这两个向量都垂直,且有正负之分。
叉积的正负取决于两向量夹角sin值的正负(图中叉积均为:绿向量×红向量)。


对于两个点A、B以及原点O,向量OA与向量OB的叉积的一半代表三角形OAB的面积。
这样我们就能通过这个把多边形分割成三角形,进而求出多边形的面积。
对于下面这个四边形ABCD:

S(ABCD)=S(OAB)+S(OBC)-S(OCD)-S(ODA)。
我们沿着多边形走一周,依次加上(或减掉)相邻的两个顶点与原点形成的三角形的面积就行。
三角形的面积就用叉积算嘛。
而且你可以发现向量的叉积特别可爱,都不需要你判断是该加上还是该减掉。
叉积算出来是正的,对面积的贡献就为正;是负的,对面积的贡献就为负。
最后别忘了最后一个点和第一个点也要求一下叉积。
所以多边形的面积就这么愉快地算出来啦~
#include<cstdio> int n;
double b,ans; struct vec
{
double x,y;
}a[]; double cross(vec q,vec w)
{
return q.x*w.y-w.x*q.y;
} int main()
{
scanf("%d%lf",&n,&b);
for(int i=;i<=n;i++)scanf("%lf%lf",&a[i].x,&a[i].y);
a[n+]=a[];
for(int i=;i<=n;i++)ans+=cross(a[i],a[i+]);
ans=ans*b*0.50;
if(ans<)ans=-ans;
printf("%.4lf",ans);
return ;
}
[洛谷P2785] 物理1(phsic1)-磁通量的更多相关文章
- 洛谷 P4710 「物理」平抛运动
洛谷 P4710 「物理」平抛运动 洛谷传送门 题目描述 小 F 回到班上,面对自己 28 / 110 的物理,感觉非常凉凉.他准备从最基础的力学学起. 如图,一个可以视为质点的小球在点 A(x_0, ...
- 洛谷——P1183 多边形的面积
P1183 多边形的面积 多边形求面积公式: $\frac {\sum_{i=0}^{n-1}(x_iy_{i+1}-y_ix_{i+1})}{2}$ #include<bits/stdc++. ...
- [洛谷P1707] 刷题比赛
洛谷题目连接:刷题比赛 题目背景 nodgd是一个喜欢写程序的同学,前不久洛谷OJ横空出世,nodgd同学当然第一时间来到洛谷OJ刷题.于是发生了一系列有趣的事情,他就打算用这些事情来出题恶心大家-- ...
- [洛谷3457][POI2007]POW-The Flood
洛谷题目链接:[POI2007]POW-The Flood 题意翻译 Description 你手头有一张该市的地图.这张地图是边长为 m∗n 的矩形,被划分为m∗n个1∗1的小正方形.对于每个小正方 ...
- DP【洛谷P1704】 寻找最优美做题曲线
[洛谷P1704] 寻找最优美做题曲线 题目背景 nodgd是一个喜欢写程序的同学,前不久(好像还是有点久了)洛谷OJ横空出世,nodgd同学当然第一时间来到洛谷OJ刷题.于是发生了一系列有趣的事情, ...
- 【洛谷】P4594 [COCI2011-2012#5] BLOKOVI
本来已经有一个专门记录洛谷题目的博客了,但这个题之毒瘤...... 为你专门写一篇总行了吧...... 传送门 先说一句,这个题每次摆放都靠到最右边不一定是最优的 因为它可以这个亚子 就是说上面那个块 ...
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
- 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
随机推荐
- oracle的用户、权限、表空间的管理
1.创建表空间 create tablespace test1_tablespace datafile 'test1file.dbf' size 10m; 2.创建临时表空间 create tempo ...
- 单个body|简单解释|复杂解释|反面解释
单个body有三种方法简单解释.复杂解释和反面解释 ========================================================================== ...
- MySQL--数据插入
1.创建表的同时插入其他表的数据 CREATE TABLE table_name SELECT ... FROM ... [...] 例: CREATE TABLE tabl_memory EN ...
- python,pandas常用函数
一.rename,更改df的列名和行索引 df=pd.DataFrame(np.arange(,).reshape(,)) print(df) print(type(df)) 结果为: <cla ...
- SpringBoot项目启动之前操作,启动之后操作
1.在Bean对象初始化之前可以做的操作 @Component public class InitBean implements BeanDefinitionRegistryPostProcessor ...
- Opencv笔记(二十一)——傅里叶变换
参考 Numpy 中的傅里叶变换 首先我们看看如何使用 Numpy 进行傅里叶变换.Numpy 中的 FFT 包可以帮助我们实现快速傅里叶变换.函数 np.fft.fft2() 可以对信号进行频率转换 ...
- MonkeyScript常用命令及Uiautomatorview问题解决
一.MonkeyScript执行脚本的命令 adb shell monkey -f <scriptfile><event-count> 1.Dispatch Trackball ...
- iOS keychain报错 25293
经过查找发现25293对应的错误是如下,即用户名和密码不正确. errSecAuthFailed = -25293, /* The user na ...
- 领域建模-模型验证与面向资源的API设计
使用 UMLet 建模 1. 使用类图,分别对 Asg_RH 文档中 Make Reservation 用例以及 Payment 用例开展领域建模.然后,根据上述模型,给出建议的数据表以及主要字段,特 ...
- [LC] 314. Binary Tree Vertical Order Traversal
Given a binary tree, return the vertical order traversal of its nodes' values. (ie, from top to bott ...