UVA 1606(p238)----Amphiphilic Carbon Molecules
2016-02-26 13:40
405 查看
#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> using namespace std; const int maxn=2000; struct point { int x,y; double rad; }; point g[maxn]; int x[maxn],y[maxn],r[maxn],n; int check(point a,point b) { return a.x*b.y-b.x*a.y>=0; } int cmp(point a,point b) { return a.rad<b.rad; } int solve() { int k,ans=0; for(int i=0;i<n;i++) { k=0; for(int j=0;j<n;j++) if(i!=j) { g[k].x=x[j]-x[i]; g[k].y=y[j]-y[i]; if(r[j]){g[k].x=-g[k].x;g[k].y=-g[k].y;} g[k].rad=atan2(g[k].y,g[k].x); k++; } sort(g,g+k,cmp); int l=0,r=0,cnt=2; while(l<k) { if(r==l){r=(r+1)%k;cnt++;}//初始情况 while(r!=l&&check(g[l],g[r])) { r=(r+1)%k; cnt++; } cnt--;l++;//主要是为了在枚举新的起点时减去老的起点 ans=max(ans,cnt); } } return ans; } int main() { ios::sync_with_stdio(false); while(cin>>n&&n) { for(int i=0;i<n;i++) cin>>x[i]>>y[i]>>r[i]; cout<<solve()<<endl; } return 0; }
相关文章推荐
- KMP算法求解
- Android Launcher抽屉类SlidingDrawer的使用!
- linux设备驱动归纳总结(七):2.内核定时器
- flume、kafka定制开发
- Android常用名令集锦
- UVA 1605(p236)----Building for UN
- express中使用ejs
- bootstrap基础学习一篇
- hdu5242 上海邀请赛 优先队列+贪心
- 尾递归=递归+迭代?
- 原生的windows.print
- 动画一
- linux设备驱动归纳总结(七):1.时间管理与内核延时
- <转>Android 文件夹访问路径~
- ioS开发知识(三十)
- UVA 1601(p205)----The Moring after Halloween
- iOS推送之本地推送
- 分治法求解最近对问题(c++)
- The 6th Zhejiang Provincial Collegiate Programming Contest->ProblemF:80ers' Memory
- AndroidStudio使用注意事项