• ICPC 2017–2018, NEERC, Northern Subregional Contest St Petersburg, November 4, 2017 I题


     题意:给你一个封闭图形让你求在多边形里面的总周长是多少

    题解:算出所有周长然后减去最外面的周长(卒~~~~~,我竟然还用半平面交瞎搞了一顿,真是太年轻,neerc名不虚传)

    #include <set>
    #include <map>
    #include <queue>
    #include <stack>
    #include <math.h>
    #include <vector>
    #include <string>
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <iostream>
    #include <algorithm>
    #define zero(a) fabs(a)<eps
    #define max( x, y )  ( ((x) > (y)) ? (x) : (y) )
    #define min( x, y )  ( ((x) < (y)) ? (x) : (y) )
    #define lowbit(x) (x&(-x))
    #define debug(a) cerr<<#a<<"=="<<a<<endl
    typedef long long ll;
    const double pi=acos(-1.0);
    const double eps=1e-8;
    const int inf=0x3f3f3f3f;
    const ll linf=0x3f3f3f3f3f3f3f3f;
    const int maxn = 1e3+5;
    using namespace std;
    
    struct point
    {
        int x,y;
        point (){}
        point (int _x,int _y)
        {
            x=_x,y=_y;
        }
    };
    point p[maxn];
    
    int main()
    {
        int n;
        freopen("intel.in","r",stdin);
        freopen("intel.out","w",stdout);
        while(~scanf("%d",&n))
        {
            memset(p,0,sizeof(p));
            int t1,t2;
            for(int i=0;i<n;i++){
                scanf("%d%d",&t1,&t2);
                p[i]=point(t1,t2);
            }
            int sum=0;
            int l=inf,r=-inf,u=-inf,d=inf;
            for(int i=0;i<n;i++){
                if(p[i].x == p[(i+1)%n].x){
                    sum += abs(p[i].y - p[(i+1)%n].y);
                }
                else if(p[i].y == p[(i+1)%n].y){
                    sum += abs(p[i].x - p[(i+1)%n].x);
                }
                if(p[i].x < l) l = p[i].x;
                if(p[i].x > r) r = p[i].x;
                if(p[i].y < d) d = p[i].y;
                if(p[i].y > u) u = p[i].y;
            }
    //        printf("test %d
    ",sum);
    //        printf("%d %d %d %d
    ",l,r,u,d);
            printf("%d
    ",sum-(r-l)*2-(u-d)*2);
        }
        fclose(stdin);
        fclose(stdout);
        return 0;
    }
    /*
    10
    1 1
    6 1
    6 4
    3 4
    3 3
    5 3
    5 2
    2 2
    2 3
    1 3
    */
  • 相关阅读:
    学习之路总结
    一个怀旧的人
    struts2+ibatis+spring框架整合(一)
    大雪来的不知所措
    struts2+ibatis+spring框架整合(二)
    20110610上午java考试复数题
    直到永远……
    2012年10月份考试后感
    Use sp_MSForEachDB instead of your own loop
    Execute TSQL using OpenRowSet
  • 原文地址:https://www.cnblogs.com/lalalatianlalu/p/7821827.html
Copyright © 2020-2023  润新知