题目链接

将所有点按从左至右顺序排序,然后将所有点先从左到右扫描再从右到左扫描,逐渐将凸包轮廓“勾勒”出来

(凸包轮廓满足,轮廓上连续的三个点按先后顺序给出的话呈逆时针方向)

最后删去一个重复的起(终)点

#include<bits/stdc++.h>
using namespace std;struct point
{double x,y;point operator -(const point& rhs)const{point ret;ret.x=x-rhs.x;ret.y=y-rhs.y;return ret;}double operator *(const point& rhs)const//叉乘
    {return x*rhs.y-y*rhs.x;}bool operator <(const point& rhs)const{return x<rhs.x||x==rhs.x&&y<rhs.y;}
}p[105],s[105];bool ok(point A,point B,point C)    //判断ABC是否是按逆时针顺序给出
{return (B-A)*(C-A)>0;
}int main()
{int T;scanf("%d",&T);while(T--){int n;scanf("%d",&n);for(int i=0;i<n;i++)scanf("%lf%lf",&p[i].x,&p[i].y);sort(p,p+n);int top=0;for(int i=0;i<n;i++)    //求下凸包
        {while(top>=2 && !ok(s[top-2],s[top-1],p[i]))top--;s[top++]=p[i];}int t=top-1;for(int i=n-1;i>=0;i--)    //求上凸包
        {while(top>=t+2 && !ok(s[top-2],s[top-1],p[i]))top--;s[top++]=p[i];}--top;    //    首尾点相同,故舍去 sort(s,s+top);for(int i=0;i<top;i++)printf("%.0lf %.0lf\n",s[i].x,s[i].y); }
}        

转载于:https://www.cnblogs.com/Just--Do--It/p/6413756.html

nyoj 78:圈水池 【凸包入门】相关推荐

  1. NYOJ - 78 圈水池 【凸包】

    圈水池 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 有一个牧场,牧场上有很多个供水装置,现在牧场的主人想要用篱笆把这些供水装置圈起来,以防止不是自己的牲畜来喝水,各个 ...

  2. python朋友圈为什么这么火-火爆朋友圈的Python入门教程,终于有人把它整理成手册了...

    image.png 文末附赠PDF!!! 本书是一本Python入门书籍,适合对计算机了解不多,没有学过编程,但对编程感兴趣的读者学习使用.这本书以习题的方式引导读者一步一步学习编程,从简单的打印一直 ...

  3. NYOJ 253LK的旅行(凸包 对踵点)

    LK的旅行 时间限制:2000 ms  |  内存限制:65535 KB 难度:5 描述 LK最近要去某几个地方旅行,她从地图上计划了几个点,并且用笔点了出来,准备在五一假期去这几个城市旅行.现在希望 ...

  4. Monotone Chain Convex Hull(单调链凸包)

    1 Monotone Chain Convex Hull(单调链凸包)算法伪代码: 2 //输入:一个在平面上的点集P 3 //点集 P 按 先x后y 的递增排序 4 //m 表示共a[i=0...m ...

  5. 系列文章--oracle简单入门教程

    oracle入门很简单:八.oracle数据表 1.创建oracle数据表创建oracle数据表的语法如下: create table命令用于创建一个oracle数据表:括号内列出了数据表应当包含的列 ...

  6. 豆瓣评分 8.6,近 5 万读者学习的 Android 经典最新版出版,承载无数程序员的回忆......

    题图 | 新的小绿人 © Google "出色向导" 对新手来说,学习 Android 开发一开始会很难.就像初次踏入异国他乡一样,即使会说当地语言,一开始也绝不会有舒服自在的感觉 ...

  7. 刘墉写给女儿的 忠告

    跨一步,就成功 作者:刘墉 刘墉以跟女儿交谈的方式深入探讨处世.使用时间.运动.写作.记忆等问题,更可贵的是他提出了许多切实可行的方法.他谈得非常具体,具体到怎样跟男生打交道.什么时间做什么事情.怎样 ...

  8. 非常感人非常激发人的潜能的信,你一定要看!

    刘墉写给女儿的信 著名美籍华人艺术家.教育家成功培育一双儿女,儿子获哈佛博 士,女儿获布什总统奖,该书写给女儿,教她<跨一步,就成功> 你能拒绝诱惑吗? 孩子,我最近发现你看电视的时间愈来 ...

  9. 初学者制作VMOS场效应管小功放

    VMOS场效应管既有 电子管的优点又有晶体管的优点,用它 制作的功率放大器声音醇厚.甜美,动态范围大.频率响应好,因此近年来在 音响 设备中得到了广泛应用. 大功率的场效应管功率放大器,电.路比较复杂 ...

最新文章

  1. vb.net限制datagridview不能选择_家里安装200兆宽带,网速还是很慢怎么办?教你一招解除网速限制...
  2. ConcurrentSkipListMap深入分析
  3. Android自定义progressBar
  4. R-CNN(Rich feature hierarchies for accurate object detection and semantic segmentation)论文理解...
  5. 巨蟒python全栈开发-第10天 函数进阶
  6. python程序显示自己的版权_手把手教你Pycharm皮肤主题及个性化设置,python程序员必备-Go语言中文社区...
  7. Error: .eslintrc.js » eslint-config-standard: Environment key “es2021“ is unknown 版本兼容问题
  8. Asp.net中Application Session Cookie ViewState Cache
  9. power bi 创建空表_如何使用R在Power BI中创建地理地图
  10. 登陆126邮箱 出现 403 Forbidden 腾达路由器问题
  11. 处理一些常见的跨浏览器封装的函数
  12. maven本地仓库配置
  13. 《动手学深度学习》(PyTorch版)
  14. 西奥电梯服务器无响应,干货│西奥电梯故障分析和技术文件
  15. 最优投资组合--马科维茨投资组合理论
  16. Windows命令行下对文件做MD5校验
  17. 功率型热敏电阻(NTC)的主要参数及深入介绍
  18. python1到100奇数相加_Python:从inpu将奇数相加
  19. TIA WinCC Unified入门经典
  20. Windows下载安装包格式说明

热门文章

  1. ue4模型为啥这么亮_坐好了,仔细听,资深建模师介绍UE4视口中的可视化模式(一)...
  2. 分布式文件系统FastDFS安装教程
  3. mybatis-plus忽略映射字段
  4. supermap许可 (*.lic9d)
  5. Linux根据软件包的名称查看可供安装的包
  6. Android开发笔记(一百六十六)H5通过WebView录像上传
  7. c++primer 第2章 练习题答案 (尚未完善 陆续补充中 基本上已经完成)
  8. 结构体含有指针的写入文件
  9. python基础知识7——迭代器,生成器,装饰器
  10. Android 架构优化~MVP 架构改造