where do I turn?
来源:互联网 发布:淘宝和京东的相同点 编辑:程序博客网 时间:2024/05/05 03:03
原题链接:
http://codeforces.com/problemset/problem/227/A
题目大意:英雄从A点出发,到达B点,然后判断到达B点后应该左转(LEFT),右转(RIGHT),还是直接(TOWARDS)到达。
解题思路:这是一个判断C点在向量AB左边,右边还是直接在向量AB上面的问题。可以通过向量的叉乘来解题。叉乘的定义如下(摘自博客http://blog.csdn.net/dcrmg/article/details/52416832):
叉乘公式
两个向量的叉乘,又叫向量积、外积、叉积,叉乘的运算结果是一个向量而不是一个标量。并且两个向量的叉积与这两个向量组成的坐标平面垂直。
对于向量a和向量b:
a和b的叉乘公式为:
其中:
根据i、j、k间关系,有:
叉乘几何意义
在三维几何中,向量a和向量b的叉乘结果是一个向量,更为熟知的叫法是法向量,该向量垂直于a和b向量构成的平面。
在3D图像学中,叉乘的概念非常有用,可以通过两个向量的叉乘,生成第三个垂直于a,b的法向量,从而构建X、Y、Z坐标系。
在此题目中向量AB与AC都位于XY轴所在的平面上,所以仅仅只要看生成后的Z的坐标,用向量AB叉乘向量AC,然后判断Z值的正负,及AB向量为(x1,y1),AC向量为(x2,y2)的话,只需要计算出上图中x1*y2-x2*y1的值的正负即可。代码如下:
#include <iostream>#include <cstdio>#include <cmath>using namespace std;int main() {double a[3][2];for (int i=0; i<3; i++) {cin>>a[i][0]>>a[i][1];}double x1=a[1][0]-a[0][0];double y1=a[1][1]-a[0][1];double x2=a[2][0]-a[0][0];double y2=a[2][1]-a[0][1];double result = x1*y2-x2*y1;if (result == 0) cout<<"TOWARDS"<<endl;else if (result > 0) cout<<"LEFT"<<endl;else cout<<"RIGHT"<<endl;return 0;}
0 0
- where do I turn?
- A. Where do I Turn?
- CodeForces 227A Where do I Turn?
- codeforces #140 dv2 A where do I turn
- Codeforces 227A Where do I Turn?(代数)
- Codeforces Round #140 (Div. 2) A. Where do I Turn?
- where do i belong
- Where do I belong
- Where Do I LOOK Now?
- Bonfire: Where do I belong
- FreeCodeCamp学习--Where do I belong
- I would like to learn PFC. Where Do I start?
- I want to learn Android Development, where do I start?
- Where do I find more information about XML?
- Where do I belong 重点:arr.sort(compareFunction)
- i do
- Where do I store my custom configuration for a BizTalk solution
- 如何改变Visual Assist数据库文件路径(How do I change where VA stores its database?)
- (原创)我对未来的人类的发展,以及AI技术发展的一些思考。
- 利用android studio实现手机信息界面
- 开源数据库PostreSQL与MySQL,未来数据处理的新选择
- 重新开始写blog
- PostgreSQL查询优化一例---使用CTE优化,兼谈松散扫描
- where do I turn?
- Is Query Optimization a “Solved” Problem?
- PostgreSQL-XL, PostgreSQL集群项目
- BP算法学习
- PostgreSQL-XL, PostgreSQL集群项目(二)
- 浅谈CSS中line-height:200% | 2.0em | 2.0 的区别
- 2014年与友人交流的一点总结
- ARM点灯,PWM,中断实验
- MySQL是怎么在源码层表达对象的-----Item对象及子对象解析(一)