标签:des style blog http color os strong io
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 3077 | Accepted: 1965 |
Description
Input
Output
Sample Input
2 10 1 4 5 2 9 8 3 5 9 4 1 7 5 3 2 6 6 3 7 10 10 8 8 1 9 2 4 10 7 6 14 1 6 11 2 11 9 3 8 7 4 12 8 5 9 20 6 3 2 7 1 6 8 2 13 9 15 1 10 14 17 11 13 19 12 5 18 13 7 3 14 10 16
Sample Output
10 8 7 3 4 9 5 6 2 1 10 14 9 10 11 5 12 8 7 6 13 4 14 1 3 2
Source
=======================================================================
好题,一开始没看懂测试样例,谁知道第一个是走过的路的数目,只要按极角排序后,所有点无疑都会走过一遍
然后就一直更新极角最小的那个,输出,并再次赋值
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <iostream> #include <algorithm> #include <math.h> using namespace std; typedef struct { int x,y,num; }point; point tmp; int crossProduct(point a,point b,point c) { return (c.x-a.x)*(b.y-a.y)-(c.y-a.y)*(b.x-a.x); } bool cmp1(point a,point b) { return a.y<b.y; } int dist(point a,point b) { return sqrt((double)(a.x-b.x)*(a.x-b.x)+(double)(a.y-b.y)*(a.y-b.y)); } bool cmp2(point a,point b) { int len=crossProduct(tmp,a,b); if(len == 0) { return dist(tmp,a)<dist(tmp,b); } return len<0; } point stk[105]; int main() { int n,m,i,j,k,t; scanf("%d",&n); while(n--) { scanf("%d",&m); for(i=0;i<m;i++) { scanf("%d%d%d",&stk[i].num,&stk[i].x,&stk[i].y); } sort(stk,stk+m,cmp1); printf("%d %d ",m,stk[0].num); tmp=stk[0]; for(i=1;i<m;i++) { sort(stk+i,stk+m,cmp2); printf("%d ",stk[i].num); tmp=stk[i]; } printf("\n"); } return 0; }
poj 1696 Space Ant (极角排序),布布扣,bubuko.com
标签:des style blog http color os strong io
原文地址:http://www.cnblogs.com/ccccnzb/p/3884179.html