Vjudge - E - 这是高中数学向量题

2017-07-15 22:29:06

  •   writer:pprp
  • 评价,用到了叉乘,很麻烦,C++构造知识必须扎实
  • 题目如下:
  • 我们用逆时针方向的顶点序列来表示,我们很想了解这块地的基本情况,现在请你编程判断HDU的用地是凸多边形还是凹多边形呢? 

    Input输入包含多组测试数据,每组数据占2行,首先一行是一个整数n,表示多边形顶点的个数,然后一行是2×n个整数,表示逆时针顺序的n个顶点的坐标(xi,yi),n为0的时候结束输入。 
    Output对于每个测试实例,如果地块的形状为凸多边形,请输出“convex”,否则输出”concave”,每个实例的输出占一行。 
    Sample Input

    4
    0 0 1 0 1 1 0 1
    0

    Sample Output

    convex
  • 
    

    代码如下;

  • #include <iostream>
    
    using namespace std;
    
    class point
    {
    public:
        int x;
        int y;
        point(int a,int b):x(a),y(b) {}
        point():x(0),y(0) {}
        void change(int a,int b)
        {
            x = a;
            y = b;
        }
    };
    
    class vec
    {
    public:
        point a;
        point b;
        point pos;
        point nag;
        vec():a(point(0,0)),
            b(point(0,0)),pos(),nag() {}
        vec(point &aa,point&bb):
            a(aa),b(bb),pos(b.x-a.x,b.y-a.y),nag(a.x-b.x,a.y-b.y) {}
        void change(point & aa,point &bb)
        {
            a.x = aa.x;
            a.y = aa.y;
            b.x = bb.x;
            b.y = bb.y;
    
            pos.x = b.x-a.x;
            pos.y = b.y-a.y;
            nag.x = a.x-b.x;
            nag.y = a.y-b.y;
        }
    };
    
    int chacheng(vec val1,vec val2)
    {
    
        if( (val1.nag.x * val2.pos.y-val1.nag.y*val2.pos.x)> 0)
        {
    
            return 1;
        }
        else
            return 0;
    }
    
    int main()
    {
        int num;
        int a,b;
    
        while(cin >> num && num!=0)
        {
            point *po = new point[num];
            vec *ve = new vec[num];
            for(int i = 0 ; i < num ; i++)
            {
                cin >> a >> b;
                po[i].change(a,b);
            }
            for(int i = 0 ; i < num ; i++)
            {
                if(i != num-1)
                    ve[i].change(po[i],po[i+1]);
                else
                    ve[i].change(po[i],po[0]);
            }
            int cnt = 0;
            for(int i = 0 ; i < num ; i++)
            {
    
                if(i == num-1)
                {
                    if(chacheng(ve[i],ve[0])==1)
                    {
                        cnt++;
                    }
                }
                else
                {
                    if(chacheng(ve[i],ve[i+1])==1)
                    {
                        cnt++;
                    }
                }
            }
            if(cnt == 0 || cnt == num)
            {
                cout << "convex" << endl;
            }
            else
            {
                cout << "concave"<<endl;
            }
        }
        return 0;
    }
时间: 2024-07-30 16:45:10

Vjudge - E - 这是高中数学向量题的相关文章

2018高考数学真题权威专家评析+2019备考方向解读

2018高考数学真题汇总!权威专家评析+2019备考方向解读 "试卷稳中求新,在保持结构总体稳定基础上,科学灵活地确定试题内容,强调数学应用,突出关键能力."教育部考试中心命题专家认为,2018年高考数学卷一个突出的特点是,根据文理科考生数学素养综合要求,调整文理科同题比例,为新一轮高考数学不分文理科的改革进行了积极探索. 探索内容改革,助推素质教育 教育部考试中心命题专家介绍,根据文理科考生数学素养的综合要求,调整全国Ⅱ卷.全国Ⅲ卷文理科同题比例,为新一轮高考数学不分文理科改革进行了

腾讯课堂目标2017高中数学联赛基础班-2作业题解答-7

课程链接:目标2017高中数学联赛基础班-2(赵胤授课) 1. 解函数方程: $$f(x) + f\left({1\over x}\right)\lg x = b^2,$$ 其中 $x\in\mathbf{R^+}$, $b > 0$, $b\ne1$. 解答: $$\begin{cases}f(x) + f\left({1\over x}\right)\lg x = b^2\\ f({1\over x}) + f(x)\lg{1\over x} = b^2\end{cases}\Rightar

高中数学视频实时互动辅导,省时高效(可自组小组课)

[关于视频互动课的优势] ① 通过专用的高清视频互动客户端,老师和学生之间都可以实时进行语音.视频的沟通和交流,同时客户端还有课件演示.指定程序界面共享等直观形象的教学工具,让一些比较难理解.难解释的问题直观化.形象化. ② 免费提供高清教学专用摄像头,上课时老师能实时看到学生的解题细节,哪里有问题一目了然,从而给予及时指导和纠正,这是传统班课很难做到的. ③ 学生免去了来回路上奔波的时间,学习效率更高. ④ 平时也可以通过这种视频互动的方式答疑(免费),效果更好. 其实视频互动课对于有学习意愿

数学趣味题(相邻同加同减问题)

想要弥补数学方面的知识于是我看了刘汝佳老师的算法艺术. 从简单开始在这里记录一下. 题目的描述 很容易理解但是让我想的话,我会感觉很困难. 似乎见到多了,对这种问题有一种天生的恐惧. 但是学习嘛,一点一点积累. 刘汝佳老师这样讲到. 先把8个点归为红色和蓝色两类. 相邻的点不在同一类中. 假设我们先看一下最下面的ABCD四个点,假设A点有a个麻烦子,B点有b个麻烦子,C点有c个,D点有d个. 我们先让A,B同时增加c个,然后让B,C同时减少c个,这样就C就没有了,而A中多了c个.这样我们就能把同

腾讯课堂目标2017高中数学联赛基础班-2作业题解答-10

课程链接:目标2017高中数学联赛基础班-2(赵胤授课) 1. 设 $a_1, a_2, \cdots, a_n\in\mathbf{R}$, 证明: $$\sqrt[3]{a_1^3 + a_2^3 + \cdots + a_n^3} \le \sqrt{a_1^2 + a_2^2 + \cdots + a_n^2}.$$ 解答: $$\left(\sum a_i^3\right)^2 \le \sum a_i^2 \cdot \sum a_i^4 \le \sum a_i^2 \cdot \

百钱百鸡,用高中数学优化算法

背景介绍 学习算法的道路上总会有各种各样的感受,偶然间碰到一个源自我国的算法问题,百钱百鸡问题,貌似很经典的问题了,可是我才刚刚知道,感觉自己太LOW了.题目是出自古代的一本叫做算经的书,原文是文言文就不往出贴了,贴了也看不懂,说大家能听懂的话就是: 有公鸡,母鸡,小鸡三种鸡,公鸡5块钱一只,母鸡三块钱一只,小鸡一块钱三只,要求用一百块钱买上面三种鸡(都要有),并且三种鸡总数是一百只,要求所有的解法. 分析 在感叹古人物价的同时,思考题目,其实很简单,只需要满足两个条件: 公鸡 + 母鸡 + 小

高中数学排列组合

一.特殊元素和特殊位置优先策略 例1.由0,1,2,3,4,5可以组成多少个没有重复数字五位奇数. 解:由于末位和首位有特殊要求,应该优先安排,以免不合要求的元素占了这两个位置. 先排末位共有 然后排首位共有 最后排其它位置共有 由分步计数原理得 二.相邻元素捆绑策略 例2. 7人站成一排 ,其中甲乙相邻且丙丁相邻, 共有多少种不同的排法. 解:可先将甲乙两元素捆绑成整体并看成一个复合元素,同时丙丁也看成一个复合元素,再与其它元素进行排列,同时对相邻元素内部进行自排.由分步计数原理可得共有种不同

腾讯课堂目标2017高中数学联赛基础班-2作业题解答-11

课程链接:目标2017高中数学联赛基础班-2(赵胤授课) 1. $x, y, z\in\mathbf{R^+}$, 证明: $$\frac{z^2 - x^2}{x + y} + \frac{x^2 - y^2}{y + z} + \frac{y^2 - z^2}{z + x} \ge 0.$$ 解答: $$\frac{z^2 - x^2}{x + y} + \frac{x^2 - y^2}{y + z} + \frac{y^2 - z^2}{z + x} \ge 0$$ $$\Leftrigh

hdu 3641 数论 二分求符合条件的最小值数学杂题

http://acm.hdu.edu.cn/showproblem.php?pid=3641 学到: 1.二分求符合条件的最小值 /*==================================================== 二分查找符合条件的最小值 ======================================================*/ ll solve() { __int64 low = 0, high = INF, mid ; while(low <=