• 【ECNU3386】Hunter's Apprentice(多边形有向面积)


    点此看题面

    大致题意: 按顺序给你一个多边形的全部顶点,让你判断是按顺时针还是逆时针给出的。

    多边形有向面积

    显然我们知道,叉积可以求出两个向量之间有向面积的两倍。

    所以,我们三角剖分,就可以求出四边形的有向面积。

    则我们就可以由此推知给出的顺序了。

    代码

    #include<bits/stdc++.h>
    #define Tp template<typename Ty>
    #define Ts template<typename Ty,typename... Ar>
    #define Reg register
    #define RI Reg int
    #define Con const
    #define CI Con int&
    #define I inline
    #define W while
    #define N 20
    using namespace std;
    int n;
    struct Point
    {
    	int x,y;I Point(CI a=0,CI b=0):x(a),y(b){}
    	I Point operator - (Con Point& o) Con {return Point(x-o.x,y-o.y);}
    	I int operator ^ (Con Point& o) Con {return x*o.y-y*o.x;}
    }p[N+5];
    I int PolygonArea(CI n,Point *p)//多边形有向面积
    {
    	RI i,t=0;for(i=3;i<=n;++i) t+=(p[i-1]-p[1])^(p[i]-p[1]);//三角剖分
    	return t;//本应除以2,但为避免double运算,此处省去
    }
    int main()
    {
    	RI Tt,i;scanf("%d",&Tt);W(Tt--)
    	{
    		for(scanf("%d",&n),i=1;i<=n;++i) scanf("%d%d",&p[i].x,&p[i].y);//读入数据
    		puts(PolygonArea(n,p)>0?"fight":"run");//判断
    	}return 0;
    }
    
  • 相关阅读:
    mac OS 截图方法
    MAC OS上JAVA1.6 升级1.7,以及 maven3.2.1配置
    maven 安装设置方法
    STemWin移植
    uIP使用记录
    define宏定义细节及uCOS中宏定义技巧
    实验室播放视频步骤
    光通信零碎知识
    论文笔记6
    OFDMA
  • 原文地址:https://www.cnblogs.com/chenxiaoran666/p/ECNU3386.html
Copyright © 2020-2023  润新知