zoukankan      html  css  js  c++  java
  • weiwancheng

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <map>
     5 using namespace std;
     6 
     7 const int maxn = 1005;
     8 struct Node {
     9     int id, x, y;
    10 }init[maxn], node[maxn], ans[maxn];
    11 
    12 
    13 int n, top;
    14 int G[maxn][maxn];
    15 int cross(Node n1, Node n2, Node n3) {
    16     return (n2.x - n1.x) * ( n3.y - n1.y ) - (n3.x - n1.x) * (n2.y - n1.y);
    17 }
    18 
    19 bool cmp(Node p1, Node p2) {
    20     if(p1.x != p2.x) {
    21         return p1.x < p2.x;
    22     }
    23     return p1.y < p2.y;
    24 }
    25 
    26 void conext() {
    27     sort(node + 1 + 1, node + n + 1, cmp);
    28     top = 0;
    29     ans[top++] = node[1];
    30     for(int i = 2; i <= n; i++) {
    31         while(top > 1 && cross(ans[top - 2], ans[top - 1], node[i]) <= 0 && G[ans[top-1].id][i]) {
    32             top--;
    33         } 
    34         ans[top++] = node[i];
    35     }
    36     int k = top;
    37     for(int i = n - 1; i >= 2; i--) {
    38         while(top > k && cross(ans[top - 2], ans[top - 1], node[i]) >= 0 && G[ans[top-1].id][i]) {
    39             top --;
    40         }
    41         ans[top++] = node[i];
    42     }
    43     if(top > 1) top--;
    44 }
    45 
    46 int main() {
    47     int n;
    48     while(EOF != scanf("%d",&n) ) {
    49         for(int i = 1; i <= n; i++) {
    50             scanf("%d %d %d",&init[i].id, &init[i].x, &init[i].y);
    51         }
    52         memset(G, 0, sizeof(G));
    53         for(int i = 1; i <= n i++) {
    54             for(int j = 1; j <= 4; j++) {
    55                 scanf("%d",&v);
    56                 G[i][v] = G[v][i] = 1;
    57             }
    58         }
    59         for(int i = 1; i <= n; i++) {
    60             for(int j = 0; j < n; j++) {
    61                 int x = ( i + j ) % n;
    62                 if(x == 0) x = n; 
    63                 node[x] = init[j + 1];
    64             }
    65             conext();
    66             for(int i = 0; i < top; i++) {
    67                 printf("%d ", ans[i].id);
    68             } puts("");
    69         }
    70     }
    71     return 0;
    72 }
    View Code
  • 相关阅读:
    HttpApplication处理对象与HttpModule处理模块
    HttpHandler与HttpModule的用处与区别
    ASP.NET管线与应用程序生命周期
    IIS架构与HTTP请求处理流程
    构造函数的选择与服务生命周期管理
    堆排序
    WebApi异常
    Java NIO内存映射---上G大文件处理(转)
    Spring+Mybatis+SpringMVC后台与前台分页展示实例(附工程)(转)
    redis入门(转)
  • 原文地址:https://www.cnblogs.com/zhanzhao/p/4100236.html
Copyright © 2011-2022 走看看