【CodeForces 227A】Where do I Turn?叉积
题意
ABC的位置关系只有三种可能:
1.在一条直线上,输出TOWARDS
A--B--C
2.AB 和BC垂直,B为直角顶点,AB左侧是C,输出LEFT
C--B
|
A
3.AB 和BC垂直,B为直角顶点,AB右侧是C,输出RIGHT
B --C
|
A
给你ABC三点的坐标,求背朝A,站在B点,往C走要前进还是左转还是右转。
分析
假定ABC的坐标:A(xa,ya),B(xb,yb),C(xc,yc),粗体表示向量。
BA为(x1,y1)=(xa-xb,ya-yb)
BC为(x2,y2)=(xc-xb,yc-yb)
两个向量叉积的模计算如下
BA×BC=|BA||BC|sin(θ)
BC×BA=|BC||BA|sin(φ)
即夹角是第二个向量到第一个向量的顺时针方向的夹角,或者说第一个向量到第二个向量的逆时针方向的夹角。
当BA×BC的值大于0时说明BA为BC顺时针转过90度,对应RIGHT
当BA×BC的值小于0时说明BA为BC逆时针转过90度,对应LEFT
当BA×BC的值等于0时说明BA为BC顺时针转过180度。对应TOWARDS
BA×BC=(x1,y1)×(x2,y2)=下面的行列式
|x1 y1|
|x2 y2|
=x1*y2-x2*y1。
于是就可以根据结果输出答案。
代码
#include <cstdio>
#define ll long long
int main()
{
ll xa,xb,xc,ya,yb,yc;
scanf("%lld%lld%lld%lld%lld%lld",&xa,&ya,&xb,&yb,&xc,&yc);
ll ans=(xb-xa)*(yc-yb)-(xc-xb)*(yb-ya);
if(ans>) printf("LEFT");
else if(ans<) printf("RIGHT");
else printf("TOWARDS");
}
【CodeForces 227A】Where do I Turn?叉积的更多相关文章
- codeforces 340B Maximal Area Quadrilateral(叉积)
事实再一次证明:本小菜在计算几何上就是个渣= = 题意:平面上n个点(n<=300),问任意四个点组成的四边形(保证四条边不相交)的最大面积是多少. 分析: 1.第一思路是枚举四个点,以O(n4 ...
- Codeforces 1255F Point Ordering(凸包+叉积)
我们随机选取点1,2作为凸包的一个分割线,那么我们可以直接枚举剩下n-2个点找到他们和向量1-2的叉积大小与正负,然后我们可以根据叉积的正负,先将他们分割出两个区域,在向量1-2的下方还是上方,接下来 ...
- Codeforces 1159F Winding polygonal line(叉积)
其实这个几何写起来还是比较方便,只用到了叉积.首先我们贪心的考虑一种情况,对于任意给定的LR串,我们起点的选择肯定是在这些点围成的凸包端点上,对于这样的起点来说,他对于L或者R都是有选择的机会,而且一 ...
- Codeforces Round #140 (Div. 2)
A. Where do I Turn? 叉积判断. B. Effective Approach 记录位置. C. Flying Saucer Segments 假设有\(n\)个人,那么\(1\)要移 ...
- Codeforces Round #346 (Div. 2) D. Bicycle Race 叉积
D. Bicycle Race 题目连接: http://www.codeforces.com/contest/659/problem/D Description Maria participates ...
- [ An Ac a Day ^_^ ] CodeForces 659D Bicycle Race 计算几何 叉积
问有多少个点在多边形内 求一遍叉积 小于零计数就好了~ #include<stdio.h> #include<iostream> #include<algorithm&g ...
- E. Turn Off The TV Educational Codeforces Round 29
http://codeforces.com/contest/863/problem/E 注意细节 #include <cstdio> #include <cstdlib> #i ...
- Codeforces Round #497 (Div. 2)B. Turn the Rectangles
Bryce1010模板 http://codeforces.com/contest/1008/problems #include <bits/stdc++.h> using namespa ...
- Codeforces 961 容斥叉积判共线 树状数组递增思想题
A B C D 给你N个点 问你能不能有两条直线穿过这N个点 首先假设这N个点是可以被两条直线穿过的 所以两条直线就把这N个点划分成两个集合 我们取1 2 3三个点这样必定会有两个点在一个集合内 ch ...
随机推荐
- HDU 5102 The K-th Distance
题意:给你n-1条边,然后没两个节点的距离按照递增的顺序,求出前k项的和. 官方题解: 把所有边(u,v) 以及(v,u)放入一个队列,队列每弹出一个元素(u,v),对于所有与u相邻的点w,如果w!= ...
- 2014 Super Training #8 A Gears --并查集
题意: 有N个齿轮,三种操作1.操作L x y:把齿轮x,y链接,若x,y已经属于某个齿轮组中,则这两组也会合并.2.操作Q x y:询问x,y旋转方向是否相同(等价于齿轮x,y的相对距离的奇偶性). ...
- 详解Java的MyBatis框架中SQL语句映射部分的编写
这篇文章主要介绍了Java的MyBatis框架中SQL语句映射部分的编写,文中分为resultMap和增删查改实现两个部分来讲解,需要的朋友可以参考下 1.resultMap SQL 映射XML 文件 ...
- 多线程BackgroundWorker
链接:http://www.cnblogs.com/yiyisawa/archive/2008/11/24/1339826.html 周六闲来无事,学习了多线程BackgroundWorker,以此记 ...
- [2]Telerik Extensions for ASP.NET MVC 中文教程(2)
上一篇文章对Telerik MVC Extensions作了一个大概的介绍,这篇文章将介绍如何将Telerik MVC Extensions添加到项目中.有以下两种方式可以将Telerik MVC E ...
- [py]os.walk爬目录&sys.argv灵活获取参数
1, 遍历目录 os.walk('/tmp') os.next() 2,sys.argv ######################################## py@lanny:~/t ...
- tcpdump参数应用
详细参数: http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html 我用到的参数: 一 tcpdump重要参数 -i 指定监听 ...
- IP+IDC-chinaz抓取
#-*-coding:gbk-*- #code by anyun.org import urllib import re import time def getHtml(url): page = ur ...
- RTX与SVN使用手册适用于新手
一.RTX使用说明 1.下载 http://rtx.tencent.com/rtx/download/index.shtml rtx下载地址(可以只下载客户端) 2.使用方法 1)点击最下面的服务器设 ...
- opencv中的图像复制、保存和显示
接下来几天会写一个opencv的基础系列,与各位相互学习! &1 图像操作 声明图像指针:IplImage* 读入图像: cvLoadImage 创建图像:cvCreateImage 复制图像 ...