[洛谷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方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
随机推荐
- CodeForces 1292A NEKO's Maze Game(思维)
#include <stdio.h> #include <string.h> #include <iostream> #include <string> ...
- vue 中使用print.js 打印遇到的问题 ?
不管怎么设置打印部分的 margin和height 仍会在预览时多出一张空白页?求各位大佬遇到过的请留言谢谢!
- Python笔记_第四篇_高阶编程_GUI编程之Tkinter_3.数据显示
1. 表格数据显示: 图示: 实例: import tkinter from tkinter import ttk # 创建主窗口__编程头部 win = tkinter.Tk() # 设置标题 wi ...
- html title属性内容换行方法(静态页面)
鼠标经过悬停于对象时提示内容(title属性内容)换行排版方法,html title 换行方法总结. html的title属性默认是显示一行的,这里介绍两种换行方法为大家分享使用. 一.直接title ...
- 163邮箱报错: 535 Error: authentication failed
今天更换新的异常信息发件邮箱,重新申请了一个新邮箱,SMTP功能已经开通,调用java代码报异常,错误信息为:535 Error: authentication failed.经过网上查证,原来新的1 ...
- js实际应用
-----------------------------获取select选中的值------------------------- 原生JS获得选中select值 var obj = documen ...
- python处理nii格式文件
网上已经有很多代码了,但是注释的都不全,看起来很费解,我自己加了一些注释,重新发出来,尽可能的通俗易懂 读取前需要先安装库 pip install nibabel pip install matplo ...
- js获取当前页面名称
// 取当前页面名称(不带后缀名) function pageName() { var a = location.href; var b = a.split("/"); var c ...
- 迅为iTOP-4418开发板编译Ubuntu
Ubuntu 系统比较特殊,源码就是它的镜像.Ubuntu 系统通过解压的方式进行烧写,我们也可以通过配置解压出来的 Ubuntu 系统源码文件夹,来配置 Ubuntu 系统.然后通过打包压缩的方式来 ...
- 二十五、SSH服务企业级应用场景
一.需求分析: 要求所有服务器在同一个用户oldboy1系统用户下,实现A机器从本地分发数据到B\C机器上,在分发过程中不需要B\C的提示系统密码验证,除了分发功能,还需要可以批量查看客户上的cpu. ...