Problem F: 凹凸四边形
Description

四边形分为凸四边形和凹四边形,如下图,图1为凸四边形,图2为凹四边形。

按照连边顺序给出四边形的四个顶点坐标,判断该四边形是凹四边形还是凸四边形。

Input

输入有多组测试用例。首先输入一个T(T<=100),表示测试用例数量。之后每组测试用例输入四行,每行输入两个整数(xi,yi)表示四边形顶点坐标。(-10000<=xi,yi<=10000,输入保证四个点一定能构成四边形)

Output

每组测试用例输出一行,如果是凸四边形,输出“convex”;否则,输出“concave”(不带引号)。

Sample Input

2
0 0
1 0
1 1
0 1
0 0
1 2
0 1
-1 2

Sample Output

Case 1: convex
Case 2: concave

HINT

向量有点乘(又叫内积)和叉乘(又叫叉积、外积)两种。

此题的一个解法是:用向量叉乘(又叫叉积、外积)判断欧式空间上的线段相交。算是线性代数在解析几何上的应用吧。

似乎从14级开始,线性代数课因减轻学生数学压力缩略课时,解析几何内容节省掉了。因此,向量乘法及其在几何上的应用敬请查书、百度、自学。

向量叉积的应用可以参考:http://wenku.baidu.com/link?url=B6vmrBd7gT0Y9TyVgNAIIcSrFpLZ8KhKwK065P8oS0Vg5UaFncTXjLDl2boNlXw2kLKmPfPE69l92Mdp7i4g5kjBBQQ-Ohlp0YrwHe_vLnW

当然,本题用其他方法也是可以做过的,因精度要求不高,如果精度要求高的话,向量叉积是最好的方法。

Append Code

思路:1.向量叉乘可以判断两线段是否相交,凸四边形对角线会相交,而凹四边形反之。
2.如有四点p1,p2,p3,p4;向量p1p2与p3p2的叉乘可判断点p1,p3在向量p2p4的同侧还是异侧,
若叉乘>0则同侧,反之异侧。
3.最后判断时点p2,p4与向量p1p3的关系也需判断。合起来即是判断t2t3t1*t4的正负
4.至于为啥用浮点型,咱也不知道啊

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
int main ()
{int p1x,p1y,p2x,p2y,p3x,p3y,p4x,p4y;int m;double t1,t2,t3,t4;scanf("%d",&m);for(int i=0; i<m; i++){scanf("%d %d",&p1x,&p1y);scanf("%d %d",&p2x,&p2y);scanf("%d %d",&p3x,&p3y);scanf("%d %d",&p4x,&p4y);t1=(p4x-p1x)*(p1y-p3y)-(p4y-p1y)*(p1x-p3x);t2=(p1x-p2x)*(p4y-p2y)-(p1y-p2y)*(p4x-p2x);t3=(p3x-p2x)*(p4y-p2y)-(p3y-p2y)*(p4x-p2x);t4=(p2x-p1x)*(p1y-p3y)-(p2y-p1y)*(p1x-p3x);if(t2*t3*t1*t4>=1e-6)printf("Case %d: convex\n",i+1);elseprintf("Case %d: concave\n",i+1);}
}

Problem F: 凹凸四边形相关推荐

  1. 2018 Multi-University Training Contest 3 Problem F. Grab The Tree 【YY+BFS】

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6324 Problem F. Grab The Tree Time Limit: 2000/1000 MS ...

  2. Problem F: 结构体--学生信息排序

    Problem F: 结构体–学生信息排序 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 378 Solved: 192 [Submit][Status ...

  3. Problem F: Matrix Problem (III) : Array Practice Time Limit: 1 Sec Memory Limit: 4 MB Submit: 8787

    Problem F: Matrix Problem (III) : Array Practice Time Limit: 1 Sec  Memory Limit: 4 MB Submit: 8787  ...

  4. Problem F: 计票

    Problem F: 计票 Description 美国总统大选终于拉开了正式帷幕,大家都预计希拉里会获胜.各州的统计结果陆续出来了,你能帮忙统计下总得票吗? Input 多组测试数据,每组先输入一个 ...

  5. Problem F: 一天中的第几秒

    实验4 Problem F: 一天中的第几秒 Description 一天24小时,每小时60分钟,每分钟60秒.一天共有86400秒. 0点0分0秒是每天的第1秒: 0点0分1秒是每天的第2秒: 0 ...

  6. Problem F. 洗衣服

    Problem F. 洗衣服 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) T ...

  7. 算法实验三 Problem F木乃伊迷宫

    Problem F 木乃伊迷宫 时限:1000ms 内存限制:10000K 总时限:3000ms 描述: 木乃伊地下宫殿是一个6行6列的迷宫.作为敢到木乃伊地下宫殿里去探险的你,有没有跟木乃伊抓迷藏的 ...

  8. Problem F: 乌鸦坐飞机

    Problem F: 乌鸦坐飞机 Time Limit: 2 Sec   Memory Limit: 128 MB Submit: 110   Solved: 9 [ Submit][ Status] ...

  9. Problem F: 平面上的点——Point类 (VI)

    Problem F: 平面上的点--Point类 (VI) Time Limit: 1 Sec   Memory Limit: 4 MB Submit: 6636   Solved: 3048 [ S ...

最新文章

  1. 移动机器人定位导航方式的演进
  2. 关节点(atriculation point)算法
  3. Spring3之Security
  4. mysql的varchar最大值是多少_MySQL varchar计算:求列的数额和计算N的最大值
  5. 模拟手机浏览器_干货系列,让浏览器自己动起来,解放双手
  6. C++文件打开模式详解
  7. JDK1.8的接口新特性
  8. 查看linux是否lvm分区,linux LVM分区查看dm设备
  9. shell脚本检查进程脚本
  10. 玩转基金(1)基金基础
  11. 片袖原型制图_袖原型一片袖打版干货
  12. 【SDOI2008】Sue的小球
  13. Strom整合Hbase
  14. 设计模式之美总结(结构型篇)
  15. 联想T430 WIN8系统换WIN7系统的相关设置
  16. 大学物理稳恒电场——恒定电流
  17. 根据一年的周数得到日期
  18. dio java_Flutter -------- dio网络请求
  19. 转计算机网络应用申请书,转专业相关申请书最新6篇
  20. C#.NET实现基于Lumisoft的邮件收发功能

热门文章

  1. cocos2dx学习笔记之常用动作类Action详解
  2. Libgdx 之Actions 动作类
  3. 街都|从阿里巴巴到Gucci,马云的“新零售”模式如何让中国领先于世界
  4. 跳马周游c++_NOIP信息学奥赛C++视频教程
  5. POLARDB:向着更快、更高、更强不断前行!
  6. HDU 4411最小费用流
  7. 模块“CHUSBDLL.DLL.dll“可能与您正在运行的Windows版本不兼容。检查该模块是否与regsvr32.exe的x86或x64版本兼容 【已解决】
  8. 启动异常 Field XXX in XXXX required a bean of type XXXX that could not be found.
  9. 计算机学院毕业生祝福,暖心的毕业祝愿赠言
  10. tkinter-pack布局详解