POJ 1696 - Space Ant 凸包的变形
初学计算几何,引入polygon后的第一个挑战——凸包
此题可用凸包算法做,只要把压入凸包的点从原集合中排除即可,最终形成图形为螺旋线。
关于凸包,具体可见凸包五法:http://blog.csdn.net/bone_ace/article/details/46239187
此处简述我O(nH)的Jarvis法(H: 凸包上点数)

过程较易于理解。
//POJ1696
//凸包变形
//AC 2016.10.13 #include "cstdio"
#include "cstdlib"
#include "iostream"
#include "cmath"
#define MAXN (55) struct point{
int num, x, y;
bool been;
point(){}
point(int X, int Y): x(X), y(Y), been(){}
void input(){
scanf("%d%d%d", &num, &x, &y);
been = ;
}
friend point operator >> (const point &p1, const point &p2){
return point(p2.x - p1.x, p2.y - p1.y);
}
friend int operator ^ (const point &p1, const point &p2){
return p1.x * p2.y - p1.y * p2.x;
}
}pt[MAXN]; void swap(point &p1, point &p2){
point p = p1;
p1 = p2;
p2 = p;
} int main(){
int m, n;
freopen("fin.c", "r", stdin);
scanf("%d", &m);
while(m--){
scanf("%d", &n);
for(int i = ; i < n; i++){
pt[i].input();
for (int j = i; j && (pt[j].y < pt[j - ].y); j--){
swap(pt[j - ], pt[j]);
}
}
printf("%d %d", n, pt[].num);
pt[].been = ;
int cur = ;
while (){
int tmp = ;
for (int i = ; i < n; i++)
if (!pt[i].been){
if (!tmp)
tmp = i;
else if (((pt[cur] >> pt[i]) ^ (pt[cur] >> pt[tmp])) >= )
tmp = i;
}
if (!tmp) break;
printf(" %d", pt[tmp].num);
pt[tmp].been = ;
cur = tmp;
}
puts("");
}
}
POJ 1696 - Space Ant 凸包的变形的更多相关文章
- poj 1696 Space Ant (极角排序)
链接:http://poj.org/problem?id=1696 Space Ant Time Limit: 1000MS Memory Limit: 10000K Total Submissi ...
- 2018.07.04 POJ 1696 Space Ant(凸包卷包裹)
Space Ant Time Limit: 1000MS Memory Limit: 10000K Description The most exciting space discovery occu ...
- poj 1696:Space Ant(计算几何,凸包变种,极角排序)
Space Ant Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 2876 Accepted: 1839 Descrip ...
- 简单几何(凸包) POJ 1696 Space Ant
题目传送门 题意:一个蚂蚁一直往左边走,问最多能走多少步,且输出路径 分析:就是凸包的变形题,凸包性质,所有点都能走.从左下角开始走,不停排序.有点纠结,自己的凸包不能AC.待理解透凸包再来写.. 好 ...
- POJ 1696 Space Ant 卷包裹法
Space Ant Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 3316 Accepted: 2118 Descrip ...
- POJ 1696 Space Ant(极角排序)
Space Ant Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 2489 Accepted: 1567 Descrip ...
- poj 1696 Space Ant(模拟+叉积)
Space Ant Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 3840 Accepted: 2397 Descrip ...
- POJ 1696 Space Ant(点积的应用)
Space Ant 大意:有一仅仅蚂蚁,每次都仅仅向当前方向的左边走,问蚂蚁走遍全部的点的顺序输出.開始的点是纵坐标最小的那个点,開始的方向是開始点的x轴正方向. 思路:从開始点開始,每次找剩下的点中 ...
- POJ 1696 Space Ant(凸包变形)
Description The most exciting space discovery occurred at the end of the 20th century. In 1999, scie ...
随机推荐
- 《统计推断(Statistical Inference)》读书笔记——第4章 统计分布族
数据分析工作中最常和多维随机变量打交道,第四章介绍了多维随机变量的基本知识,其中核心概念是条件分布和条件概率.条件分布和条件概率可以抽象出条件期望的概念,在随机分析的研究中,理解随机积分和鞅理论和关键 ...
- (转)Let’s make a DQN 系列
Let's make a DQN 系列 Let's make a DQN: Theory September 27, 2016DQN This article is part of series Le ...
- Windows下Faster-RCNN的使用
上一篇随笔中包含了关于faster rcnn的介绍. 安装与使用 1.下载Faster R-CNN源码(https://github.com/ShaoqingRen/faster_rcnn)2.安装 ...
- JS识记
1.重新按照URL地址加载本页? window.location.reload(); 2.JS中实现命名空间一例? <script type="text/javascript" ...
- Google 的开源技术protobuf 简介与例子
本文来自CSDN博客:http://blog.csdn.NET/program_think/archive/2009/05/31/4229773.aspx 今天来介绍一下"Protocol ...
- Asp.net中WebForm 与 MVC的架构区别
ASP.NET Webform 后台代码(behind code) 这种behind code 模式有5个问题,我们用MVC的设计思想来分别解决这些问题 1.基于视图的方案来解决基于行为的需求 从上图 ...
- ADF_Controller系列1_绑定TasksFlow、Region和Routers(Part1)
2015-02-14 Created By BaoXinjian
- java内存溢出分析(二)
我们继续java内存溢出分析(一)的分析,点击Details>按钮,显示如下图,我们发现有一个对象数量达到280370216个,再点击其中的List objects 点击后,显示下图 至此,我们 ...
- android html 图片处理类--加载富文本工具类
在android开发中,一些资讯类页面,里面有html标签和图片,html 标签一般通过Html.fromHtml方法,即可以解决,但是如果html 有图片标签,那么,Html.fromHtml 好像 ...
- XE6移动开发环境搭建之IOS篇(1):准备安装材料(有图有真相)
网上能找到的关于Delphi XE系列的移动开发环境的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 原创作品,请尊重作者劳动成果,转载请注明出处!!! 1.选择方案 --- ...