标签:col str int ref The spl throw gif RoCE
Time Limit: 3000MS | Memory Limit: 65536K | |
Total Submissions: 14568 | Accepted: 5510 |
Description
Input
Output
Sample Input
5 1 1 4 2 2 3 3 1 1 -2.0 8 4 1 4 8 2 3 3 6 -2.0 3 0 0 1 1 1 0 2 1 2 0 3 1 0
Sample Output
Top sticks: 2, 4, 5. Top sticks: 1, 2, 3.
Hint
Source
1 #include<iostream> 2 #include<algorithm> 3 #include<cstdio> 4 #include<cstdlib> 5 using namespace std; 6 const int MAX = 100000; 7 typedef struct point { 8 double x; 9 double y; 10 point() { 11 12 } 13 point(double a, double b) { 14 x = a; 15 y = b; 16 } 17 }point; 18 typedef struct edge { 19 point start; 20 point end; 21 edge() { 22 23 } 24 edge(point a, point b) { 25 start = a; 26 end = b; 27 } 28 }edge; 29 edge line[MAX], tmp; 30 point p; 31 int n; 32 double x, y, x2, y2; 33 inline double max(double a, double b) { return a > b ? a : b; } 34 inline double min(double a, double b) { return a < b ? a : b; } 35 double multi(point p1, point p2, point p0) { 36 return (p2.y - p0.y)*(p1.x - p0.x) - (p2.x - p0.x)*(p1.y - p0.y); 37 } 38 bool Across(edge v1, edge v2) { 39 if (max(v1.start.x, v1.end.x) >= min(v2.start.x, v2.end.x) && 40 max(v2.start.x, v2.end.x) >= min(v1.start.x, v1.end.x) && 41 max(v1.start.y, v1.end.y) >= min(v2.start.y, v2.end.y) && 42 max(v2.start.y, v2.end.y) >= min(v1.start.y, v1.end.y) && 43 multi(v1.start, v2.end, v2.start)*multi(v2.end, v1.end, v2.start) > 0 && 44 multi(v2.start, v1.end, v1.start)*multi(v1.end, v2.end, v1.start) > 0 45 ) 46 return true; 47 return false; 48 } 49 int main(void) { 50 while (~scanf("%d", &n) && n) { 51 for (int i = 0; i < n; i++) { 52 scanf("%lf%lf%lf%lf", &x, &y, &x2, &y2); 53 line[i] = edge(point(x, y), point(x2, y2)); 54 } 55 printf("Top sticks:"); 56 for (int i = 0; i < n-1; i++) { //最后一根木棒必定在上面 57 tmp = line[i]; 58 int flag = 0; 59 for (int j = i + 1; j < n; j++) { 60 if (Across(tmp, line[j])) //和之后的木块相交,一定在下面 61 { 62 flag = 1; 63 break; 64 } 65 } 66 if (flag != 1) { 67 printf(" %d,", i + 1); 68 } 69 } 70 printf(" %d.\n", n); 71 } 72 return 0; 73 }
POJ 2653--Pick-up sticks(判断线段相交)
标签:col str int ref The spl throw gif RoCE
原文地址:https://www.cnblogs.com/FlyerBird/p/9293557.html