UVA - 1606 Amphiphilic Carbon Molecules : 极角扫描法 利用叉积比较极角大小
2017-07-31 16:27
447 查看
http://www.cnblogs.com/zyb993963526/p/6353892.html?utm_source=itdadao&utm_medium=referral
#include <algorithm> #include <iostream> #include <sstream> #include <utility> #include <string> #include <vector> #include <queue> #include <map> #include <set> #include <cstring> #include <cstdio> #include <cmath> #define met(a,b) memset(a, b, sizeof(a)); #define IN freopen("in.txt", "r", stdin); #define OT freopen("out.txt", "w", stdout); using namespace std; typedef long long LL; typedef pair<int, int> PII; const int maxn = 1e5 + 100; const int INF = 0x7fffffff; const int dir[5][2] = {0,0,-1,0,1,0,0,-1,0,1}; const LL MOD = 1e9 + 7; struct pos{ int x, y, r; double rad; bool operator < (const pos& b) const { return rad < b.rad; } bool Left(const pos& b) const { return x*b.y - y*b.x >= 0; } pos Repair(pos b) { pos tmp; tmp.x = x-b.x; tmp.y = y-b.y; tmp.r = r; if(tmp.r == 1) tmp.x = -tmp.x, tmp.y = -tmp.y; tmp.rad = atan2(tmp.y, tmp.x); return tmp; } }p[maxn], q[maxn]; int n, qid, ans, cnt, cur; int main() { #ifdef _LOCAL IN; //OT; #endif // _LOCAL while(scanf("%d", &n) == 1 && n) { for(int i = 0; i < n; ++i) { scanf("%d%d%d", &p[i].x, &p[i].y, &p[i].r); } if(n <= 3) { printf("%d\n", n); continue; } ans = 0; for(int i = 0; i < n; ++i) { qid = 0; for(int j = 0; j < n; ++j) if(i!=j) q[qid++] = p[j].Repair(p[i]); sort(q, q+qid); cnt = 2; cur = 0; for(int j = 0; j < qid; ++j) { if(cur == j) cur = (cur+1)%qid, ++cnt; while(cur != j && q[j].Left(q[cur])) { cur = (cur+1)%qid, ++cnt; } --cnt; ans = max(ans, cnt); } } printf("%d\n", ans); } return 0; }
相关文章推荐
- UVA - 1606 Amphiphilic Carbon Molecules 极角扫描法
- UVa 1606 Amphiphilic Carbon Molecules——极角扫描
- 【极角排序、扫描线】UVa 1606 - Amphiphilic Carbon Molecules(两亲性分子)
- UVA 1606 Amphiphilic Carbon Molecules 两亲性分子 (极角排序或叉积,扫描法)
- UVa 1606 Amphiphilic Carbon Molecules (扫描法+极角排序)
- Uva1606 Amphiphilic Carbon Molecules【例题8-6】【极角扫描法】【不懂!】
- uva 1606 amphiphilic carbon molecules【把缩写写出来,有惊喜】(滑动窗口)——yhx
- UVA 1606(p238)----Amphiphilic Carbon Molecules
- 例题8-6 两亲性分子(Amphiphilic Carbon Molecules, ACM/ICPC Shanghai 2004, UVa1606)
- 两亲性分子(Amphiphilic Carbon Molecules,Uva 1606)
- UVa OJ 1606 - Amphiphilic Carbon Molecules
- uva 1606 amphiphilic carbon molecules【把缩写写出来,有惊喜】(滑动窗口)——yhx
- UVa 1606 (极角排序) Amphiphilic Carbon Molecules
- UVA1606 Amphiphilic Carbon Molecules
- uva1606 Amphiphilic Carbon Molecules
- uva 1606 amphiphilic carbon molecules【把缩写写出来,有惊喜】(滑动窗口)——yhx
- UVA - 1606 Amphiphilic Carbon Molecules(极角排序+扫描法+计算几何)
- uva 1606 amphiphilic carbon molecules【把缩写写出来,有惊喜】(滑动窗口)——yhx
- uva1606 Amphiphilic Carbon Molecules
- Amphiphilic Carbon Molecules UVA - 1606