• POJ2007 叉积


    题意

    给出一堆点,以(0,0)开始,这堆点能组成一个多凸边型,请把这些点从逆时针方向排序。还是以(0,0)开始输出。

    思路

    数学过关了很简单的题,数学不过关就难受了,叉积是个什么东西嘛???

    向量叉积:a x b = ax * by - ay * bx = |a| * |b| * sin<a, b>,可以判断两个向量间夹角是顺时针还是逆时针,但是在这里这个没用!

    首先题目定了原点(0,0),所以其实点坐标就是向量坐标,我们再定逆时针为规定方向,此时叉积的正负就可以判断a,b的前后顺序,因为:

    • 方向已定(逆时针)
    • 多边形为凸边型,所以所有点与原点连线的夹角不会超过180°,这也是为什么题目可以从一个方向得出一个固定顺序的原因。

    题目要求的就是这个顺序。

    此外如果没有规定第一个点为(0,0),也可以通过任意点减第一个点坐标得到向量后,按上面方法计算。

    注意

    有个坑的地方是:不要把原点(0,0)放入数组进行比较,此时会WA!!!

    代码

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Scanner;
    import java.util.Vector;
    
    /**
     * @Author Yuri
     * @Date 2020/11/27 15:02
     * @Version 1.0
     * @Description:
     */
    
    
    public class Main {
        static class Point implements Comparable<Point> {
            int x, y;
    
            Point(int x, int y){
                this.x = x;
                this.y = y;
            }
    
            @Override
            public int compareTo(Point o) {
                return -(x * o.y - y * o.x);
            }
    
            @Override
            public String toString() {
                return "(" + x + "," + y + ")";
            }
        }
        static Scanner in = new Scanner(System.in);
        static ArrayList<Point> points = new ArrayList<Point>();
    
        public static void main(String[] args) {
            Point point = new Point(in.nextInt(), in.nextInt());
            while (in.hasNext()) {
                points.add(new Point(in.nextInt(), in.nextInt()));
            }
            Collections.sort(points);
            System.out.println("(0,0)");
            for (int i = 0; i < points.size(); i++) {
                System.out.println(points.get(i));
            }
            System.out.println();
        }
    }
    
  • 相关阅读:
    nodejs 异步转同步整理
    使用async-utility 转换异步请求为同步
    cube.js schemaVersion npm 包
    开发一个cube.js schemaVersion 包装
    cube.js 多租户参考设计说明
    cube.js 调度&&查询队参考参数
    cube.js 自定义首页显示信息
    cube.js data-blending一些说明
    cube.js 新版本的一些特性
    cube.js TimeoutError: ResourceRequest timed out 问题参考解决方法
  • 原文地址:https://www.cnblogs.com/AkimotoAkira/p/14049139.html
Copyright © 2020-2023  润新知