zoukankan      html  css  js  c++  java
  • 【UVa】1606 Amphiphilic Carbon Molecules(计算几何)

    题目

    题目


    分析

    跟着lrj学的,理解了,然而不是很熟,还是发上来供以后复习


    代码

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 
     4 const int maxn=1005;
     5 
     6 struct Point
     7 {
     8     int x,y;
     9     double rad;
    10     bool operator < (const Point &rhs) const{
    11         return rad<rhs.rad;
    12     }
    13 }op[maxn],p[maxn];
    14 
    15 int n,color[maxn];
    16 
    17 bool left(Point A,Point B)
    18 {
    19     return A.x*B.y - A.y*B.x >= 0;
    20 }
    21 
    22 int solve()
    23 {
    24     if(n<=2) return 2;
    25     int ans=0;
    26     
    27     for(int i=0;i<n;i++)
    28     {
    29         int k=0;
    30         
    31         //极角排序 
    32         for(int j=0;j<n;j++)
    33             if(j!=i)
    34             {
    35                 p[k].x=op[j].x-op[i].x;
    36                 p[k].y=op[j].y-op[i].y;
    37                 if(color[j])
    38                 {
    39                     p[k].x = -p[k].x; p[k].y = -p[k].y;
    40                 }
    41                 p[k].rad=atan2(p[k].y , p[k].x);
    42                 k++;
    43             }
    44         sort(p,p+k);
    45         
    46         //滑动 
    47         int L=0 , R=0 , cnt=2;
    48         while(L < k)
    49         {
    50             if(R==L) {  R = (R+1)%k; cnt++;  }
    51             while(R != L && left(p[L] , p[R]))
    52             {
    53                 R = (R+1)%k; cnt++;
    54             }
    55             cnt--; L++;
    56             ans=max(ans,cnt);
    57         }
    58     }
    59     return ans;
    60 }
    61 
    62 int main()
    63 {
    64     while(scanf("%d",&n)==1 && n)
    65     {
    66         for(int i=0;i<n;i++)
    67             scanf("%d%d%d", &op[i].x, &op[i].y, &color[i]);
    68         printf("%d
    ",solve());
    69     }
    70     return 0;
    71 }
    View Code
  • 相关阅读:
    MFC菜单快捷键的应用
    TDD in C++
    Mapping
    初入股市者怎样看盘
    C++随笔分类列表(高级)
    C++代码优化
    IT生活
    十一年炒股的感悟
    框架设计(第2版)CLR Via C#(1)
    Visual Assist X自己常用的快捷功能
  • 原文地址:https://www.cnblogs.com/noblex/p/8319184.html
Copyright © 2011-2022 走看看