POJ 1696 Space Ant 极角排序(叉积的应用)
题目大意:给出n个点的编号和坐标,按逆时针方向连接着n个点,按连接的先后顺序输出每个点的编号。
题目思路:Cross(a,b)表示a,b的叉积,若小于0:a在b的逆时针方向,若大于0a在b的顺时针方向。每次都sort一下,找出在当前点逆时针方向的最远的点。数据很小O(N*N*log(N))的复杂度0s AC了……
#include<cstdio> #include<cstdlib> #include<cmath> #include<iostream> #include<algorithm> #include<cstring> #include<vector> #include<queue> #define INF 0x3f3f3f3f #define MAX 100005using namespace std;int n,pos,ans[MAX];struct node {int id,x,y; }point[MAX];int Dist(int x1,int y1,int x2,int y2) {return sqrt((x1-x2)*(x1-x2)*1.0 + (y1-y2)*(y1-y2)*1.0); }int Cross(int x1,int y1,int x2,int y2,int x3,int y3) {return (x1-x2)*(y1-y3)-(x1-x3)*(y1-y2); }bool cmp(struct node A,struct node B) {int op=Cross(point[pos].x,point[pos].y,A.x,A.y,B.x,B.y);if(op>0)return true;else if(op==0 && Dist(point[pos].x,point[pos].y,A.x,A.y)<Dist(point[pos].x,point[pos].y,B.x,B.y))return true;return false; }int main() {int T,cnt;scanf("%d",&T);while(T--){pos=0;cnt=0;memset(ans,0,sizeof(ans));scanf("%d",&n);scanf("%d%d%d",&point[0].id,&point[0].x,&point[0].y);for(int i=1;i<n;i++){scanf("%d%d%d",&point[i].id,&point[i].x,&point[i].y);if(point[i].y < point[0].y)//找出起点:左下方的点swap(point[0],point[i]);else if(point[i].y==point[0].y && point[i].x < point[0].x)swap(point[0],point[i]);}sort(point,point+n,cmp);ans[cnt++]=point[pos++].id;for(int i=1;i<n;i++){sort(point+i,point+n,cmp);ans[cnt++]=point[pos++].id;}printf("%d ",cnt);for(int i=0;i<cnt;i++)printf("%d%c",ans[i],i==cnt-1?'\n':' ');}return 0; }
View Code
转载于:https://www.cnblogs.com/alan-W/p/6019998.html
POJ 1696 Space Ant 极角排序(叉积的应用)相关推荐
- POJ - 1696 Space Ant(极角排序)
题目链接:点击查看 题目大意:现在有一只特殊的蚂蚁,它会按照以下规则尽可能长的寻找路径: 不能回头 不能右转 只能逆时针行走 现在给出n个点,输出最长的路径 题目分析:既然是逆时针旋转,那么每次只能走 ...
- POJ 1696 Space Ant(极角排序)【计算几何】
ACM博客_kuangbin POJ 1696 Space Ant(极角排序) Space Ant Time Limit: 1000MS Memory Limit: 10000K Total Su ...
- poj 1696 Space Ant
大致题意: 一只蚂蚁,只会向左转,现在给出平面上很多个点,求解一种走法, 能使得蚂蚁能经过的点最多,每个顶点该蚂蚁只能经过一次,且所行走的路线不能发生交叉. 卷包裹法: 形象思维假想一根无限长的绳子, ...
- 简单几何(极角排序) POJ 2007 Scrambled Polygon
题目传送门 题意:裸的对原点的极角排序,凸包貌似不行. /************************************************ * Author :Running_Time ...
- 计算几何----极角排序
一.极角,极径,极轴,极点概念 在平面内取一个定点O,叫极点,引一条射线Ox,叫做极轴,再选定一个长度单位和角度的正方向(通常取逆时针方向). 对于平面内任何一点M,用ρ表示线段OM的长度(有时也用r ...
- BZOJ 1132 [POI2008]Tro(极角排序)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1132 [题目大意] 平面上有N个点. 求出所有以这N个点为顶点的三角形的面积和(N&l ...
- HihoCoder - 1879 Rikka with Triangles(极角排序求所有锐角三角形的面积)
题目链接:点击查看 题目大意:给出 n ( n <= 2000 ) 个点,求出所有不同的锐角三角形的面积 题目分析:n^3 暴力枚举肯定是不可以的,和之前写过的一个题目思路很像:HDU-5784 ...
- BZOJ.1132.[POI2008]Tro(极角排序)
BZOJ 洛谷 考虑暴力,每次枚举三个点,答案就是\(\frac12\sum_{k<j<i}(i-k)\times(j-k)\). 注意到叉积有分配率,所以固定\(k\),枚举\(i,j\ ...
- L3-021 神坛 (30 分)(极角排序)
题目链接 在古老的迈瑞城,巍然屹立着 n 块神石.长老们商议,选取 3 块神石围成一个神坛.因为神坛的能量强度与它的面积成反比,因此神坛的面积越小越好.特殊地,如果有两块神石坐标相同,或者三块神石共线 ...
最新文章
- SpringBoot使用prometheus监控
- 利用JFreeChart生成简单柱状图(Java)
- Jersey Restful Application with tomcat
- 2、leetcode278 第一个错误的版本**
- java new url 带密码_获取密码重置URL
- AS3深拷贝数据对象(1)深拷贝基本数据类型
- Linux系统编程--2(环境变量,进程控制)
- pycharm连接sqlite
- PHP AJAXFORM提交图片上传并显示图片源代码
- 修改rpm中的文件重新打包
- MySQL中的前缀索引
- python%20是什么类型的语言
- 在数组中寻找出现次数超过数组长度一半的数
- ADT版本不同导致的一个问题
- 学生信息管理系统(附运行效果图和源码下载)分页技术(后台封装json数据传递到前端显示,动态分页等)(Mybatis,json,ajax,jQuery实用整合示例)
- AutoCAD导出的图片十分模糊——亲测有效解决
- 【Altium Designer10详细安装】
- 纯屏和液晶显示器有什么区别
- 基于Python的高校网络课程数据分析
- jQuery的五种初始化加载写法
热门文章
- 一加7充电_刘作虎:一加7没有无线充电,Dash是最好的快充之一
- 有些道理经历过就是道理,没经历过可能就是心灵鸡汤。
- 上海库源电气OrCAD视频教程
- 倒排索引原理_搜索引擎都在用的倒排索引——原理与实现
- 计算机动画人机交互,北大计算机系多媒体与人机交互.ppt
- android采用什么图标单位,Android支持的长度单位
- 动态调用类 java_Java动态调用类中方法
- 学了C++不会STL,简直少了左膀右臂
- gsoap搭建WebService服务
- 对Android源码分析总结(Z)