zoukankan      html  css  js  c++  java
  • USACO2002 Open:雄伟的山峦

    简要题意:

      奶牛们在落基山下避暑,从它们的房子向外望去,可以看到N 座山峰构成的山峦,奶牛发现每座山峰都是等腰三角形,底边长度恰好是高度的两倍。所以山峰的顶点坐标可由两个底部端点求出。设i 座第山峰的两个底部端点的横坐标分别为Ai 和Bi。你能否计算一下这片山峦所覆盖 的总面积是多少。为了保证答案是整数,输出总面积乘以4 的积。


    输入格式:

      • 第一行:单个整数N,1 ≤ N ≤ 10^5

      • 第二行到第N + 1 行:第i + 1 行有两个整数Ai 和Bi,−2^15 ≤ Ai < Bi ≤ 2^15


    输出格式:

      • 单个整数:表示山峦所占总面积乘以4 的积。


    样例输入:

    5

    2 7

    6 9

    12 15

    14 21

    20 25


    样例输出:

    114


    题解:

      就是一道排序的水题,USACO竟然定了三星难度QAQ,做法很简单,将每个三角形按照第一个点的坐标从小到大排序,然后去除能被覆盖的三角形,然后判断相邻的三角形是相离还是相交的关系就可以了

      PS:总面积乘以四之后其实就是:底边*高(底边的一半)/2*4=底边*底边


    参考代码:

    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    struct node
    {
        int x,y;
    }a[110000],s[110000];
    int cmp(const void *xx,const void *yy)
    {
        node n1=*(node *)xx;
        node n2=*(node *)yy;
        if(n1.x<n2.x) return -1;
        if(n1.x>n2.x) return 1;
        if(n1.y<n2.y) return -1;
        if(n1.y>n2.y) return 1;
        return 0;
    }
    int main()
    {
        int n;
        scanf("%d",&n);
        for(int i=1;i<=n;i++) scanf("%d%d",&a[i].x,&a[i].y);
        qsort(a+1,n,sizeof(node),cmp);
        int len=0;
        for(int i=2;i<=n;i++)
        {
            if(a[i-1].x!=a[i].x)
            {
                s[++len]=a[i-1];
            }
        }
        if(a[n-1].x!=a[n].x) s[++len]=a[n];
        int i=2,t=1;
        n=1;
        a[1]=s[1];
        while(1)
        {
            while(s[t].y>=s[i].y&&i<=len) i++;
            if(i==len+1) break;
            a[++n]=s[i];
            t=i;
            i++;if(i==len+1) break;
        }
        int ans=0;
        for(int i=2;i<=n;i++)
        {
            if(a[i-1].y<=a[i].x) ans+=(a[i-1].y-a[i-1].x)*(a[i-1].y-a[i-1].x);
            else ans+=(a[i-1].y-a[i-1].x)*(a[i-1].y-a[i-1].x)-(a[i-1].y-a[i].x)*(a[i-1].y-a[i].x);
        }
        ans+=(a[n].y-a[n].x)*(a[n].y-a[n].x);
        printf("%d
    ",ans);
        return 0;
    }

     

  • 相关阅读:
    MongoDB在windows服务器安装部署及远程连接MongoDB
    react 常用组件
    react component 语法报错解决
    yarn install node-sass(gulp-sass) 安装失败解决方案
    eslint 规则中文注释
    react jsx 代码格式化
    vue sublime 工欲善其事,必先利其器
    jenkins 配置
    nodejs 使用 superagent 与 cheerio 完成简单爬虫
    jQuery DOM对象区别与联系
  • 原文地址:https://www.cnblogs.com/Never-mind/p/7767024.html
Copyright © 2011-2022 走看看