uva270 级角排序水题
2014-07-25 22:08
281 查看
/************************************************************* 题意:给你一些点,最多700个,问你最多有多少个点共线 思路:一每个点为中心,级角排序,再扫一遍 **************************************************************/ #include <iostream> #include <cstdio> #include <algorithm> #include <cmath> #include <cstring> using namespace std; struct Point { int x, y; Point(int a = 0, int b = 0): x(a), y(b){} Point operator-(const Point &t) {return Point(x - t.x, y - t.y); } }point[777], p[777]; char s[111]; int n; int cross(const Point &a, const Point &b){return a.x * b.y - a.y * b.x; } int dot(const Point &a, const Point &b){return a.x * a.y + b.y * b.x; } bool cmp(const Point &a, const Point &b) { if(a.y == 0 && a.x >= 0 && b.y != 0) return true; if(b.y == 0 && b.x >= 0 && a.y != 0) return false; if(a.y == 0 && b.y == 0) { if(a.x > 0 && b.x < 0) return true; if(a.x < 0 && b.x > 0) return false; return abs(a.x) < abs(b.x); } if(a.y > 0 && b.y < 0) return true; if(a.y < 0 && b.y > 0) return false; int c = cross(a, b); return c > 0; } int solve(int center) { int i, j, ans=0; for(i=0, j=0; i < n; i++) if(i != center) { p[j++] = point[i] - point[center]; } sort(p, p + n - 1, cmp); for(i = 1, j = 1; i < n - 1; i++) { if(cross(p[i], p[i-1]) == 0) j++; else j = 1; ans = max(ans, j); } return ans + 1; } int main() { //freopen("uva270.in", "r", stdin); int T; scanf("%d", &T); gets(s); gets(s); while(T--) { int i, j, ans = 0; n = 0; while(gets(s) != NULL && strlen(s) > 0) { //puts(s); sscanf(s, "%d %d", &point .x,&point .y); n++; } for(i = 0; i < n; i++) ans = max(ans, solve(i)); printf("%d\n", ans); if(T > 0) puts(""); } return 0; }
相关文章推荐
- POJ 1002 UVA 755 487--3279 电话排序 简单但不容易的水题
- POJ 1002 UVA 755 487--3279 电话排序 简单但不容易的水题
- [排序&&模拟]Lining Up uva270
- UVA 11987 Where is the Marble? [排序水题]
- [ACM_水题] UVA 11292 Dragon of Loowater [勇士斗恶龙 双数组排序 贪心]
- Uva 10420 - List of Conquests(排序水题)
- uva - 270 - Lining Up(枚举、排序)
- UVALive5379 UVA270 Lining Up【输入输出+水题】
- UVA993 Product of digits【水题+字符串排序+不排序】
- uva 156 - Ananagrams(排序水题)
- uva 270 Lining Up(暴力或极角排序)
- 水题,优化,高效(年龄排序,uva 11462)
- UVa - 11136 Hoax or what (水题 最大最小堆 set)
- UVA 10420(排序检索)
- UVa 11462 年龄排序 (计数排序及IO优化)
- UVA 10714 Ants 蚂蚁 贪心+模拟 水题
- UVALive2363 POJ1005 HDU1065 ZOJ1049 I Think I Need a Houseboat【数学计算+水题】
- UVA 1339 - Ancient Cipherguo(水题)
- UVa 10098 - Generating Fast STL 排序+排列
- UVALive 2318 水题