POJ 1696 Space Ant (极角排序的应用)
2011-06-01 17:10
393 查看
#include<iostream>
#include<cmath>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
struct Point{int x, y, num;}st;
bool cmp_y(const Point &p1,const Point &p2){
return p1.y<p2.y;
}
int x_mult(Point op, Point sp, Point ep){
return (sp.x-op.x)*(ep.y-op.y)-(sp.y-op.y)*(ep.x-op.x);
}
int dist(Point p1, Point p2){
return (p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y);
}
bool cmp_angle(const Point &p1, const Point &p2){
int t=x_mult(st, p1, p2);
if(t>0)return true;
if(t<0)return false;
if(dist(p1,st)<dist(p2,st))
return true;
return false;
}
int main(){
int T, i, n;
Point p[55];
scanf("%d", &T);
while(T--){
scanf("%d", &n);
for(i=0; i<n; i++)
scanf("%d %d %d", &p[i].num, &p[i].x, &p[i].y);
sort(p,p+n,cmp_y);
st=p[0];
printf("%d %d", n, p[0].num);
for(i=1; i<n; i++){
sort(p+i, p+n, cmp_angle);
st=p[i];
printf(" %d", p[i].num);
}
printf("/n");
}
return 0;
}
#include<cmath>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
struct Point{int x, y, num;}st;
bool cmp_y(const Point &p1,const Point &p2){
return p1.y<p2.y;
}
int x_mult(Point op, Point sp, Point ep){
return (sp.x-op.x)*(ep.y-op.y)-(sp.y-op.y)*(ep.x-op.x);
}
int dist(Point p1, Point p2){
return (p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y);
}
bool cmp_angle(const Point &p1, const Point &p2){
int t=x_mult(st, p1, p2);
if(t>0)return true;
if(t<0)return false;
if(dist(p1,st)<dist(p2,st))
return true;
return false;
}
int main(){
int T, i, n;
Point p[55];
scanf("%d", &T);
while(T--){
scanf("%d", &n);
for(i=0; i<n; i++)
scanf("%d %d %d", &p[i].num, &p[i].x, &p[i].y);
sort(p,p+n,cmp_y);
st=p[0];
printf("%d %d", n, p[0].num);
for(i=1; i<n; i++){
sort(p+i, p+n, cmp_angle);
st=p[i];
printf(" %d", p[i].num);
}
printf("/n");
}
return 0;
}
相关文章推荐
- poj-1696-Space Ant-极角排序
- POJ 1696 Space Ant 计算几何 叉积的应用
- poj 1696 Space Ant(极角排序)
- POJ 1696 Space Ant 【极角排序】
- poj1696 Space Ant (极角排序,叉积)
- POJ-1696 Space Ant 凸包应用
- poj 1696 Space Ant(叉积的应用)
- poj 1696 Space Ant 极角排序
- POJ 1696 Space Ant(点积的应用)
- POJ 1696 Space Ant(极角排序)
- poj 1696 Space Ant(叉积的性质,做极角排序)
- poj 1696:Space Ant(计算几何,凸包变种,极角排序)
- POJ 1696 Space Ant (极角排序)
- POJ 1696 Space Ant(极角排序)
- POJ 1696 Space Ant(点积的应用)
- POJ 1696 Space Ant(极角排序)
- POJ 1696 Space Ant (计算几何 + 极角排序)
- poj 1696 Space Ant (极角排序)
- POJ 1696 Space Ant (极角排序、凸包卷包裹(GiftWrapping)算法)
- POJ 1696 Space Ant 类似凸包问题(叉积的应用)