计算机辅助设计

时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte

描述

在计算机辅助设计(CAD)中,有一个经典问题:消除隐藏线(被其它图形遮住的线段) 。你需要设计一个软件,帮助建筑师绘制城市的侧视轮廓图。为了方便处理,限定所有的建筑物都是矩形的,而且全部建立在同一水平面上。每个建筑物用一个三元组表示(Li, Hi, Ri)其中 Li 和 Ri 分别是建筑物 i 的左右边缘坐标,Hi 是建筑物 i 的高度。

 
    下面左图中的建筑物分别用如下三元组表示:
    (1,11,5),(2,6,7),(3,13,9),(12,7,16),(14,3,25),(19,18,22),(23,13,29),(24,4,28)
    下面右图中的城市侧视轮廓线用如下的序列表示:
    (1,11,3,13,9,0,12,7,16,3,19,18,22,3,23,13,29,0)

输入

输入的第一行为一个整数N,表示建筑物的数目,接下来的N行的输入中包含一系列的建筑物三元组。建筑物的坐标都是正整数且不大于 1000。建筑物的数目不会超过 50。每行只有一个三元组。三元组的每个元素之间用一个空格分开。

输出

输出中包含一行描述轮廓线的数值序列,其中偶元素代表轮廓线的延伸高度,奇元素代表轮廓线顶点的水平坐标,如上面的图例所示。

样例输入

8
1 11 5
2 6 7
3 13 9
12 7 16
14 3 25
19 18 22
23 13 29
24 4 28

样例输出

1 11 3 13 9 0 12 7 16 3 19 18 22 3 23 13 29 0

题解一:刚开始把问题想得特复杂,不断的拿两个区间比,重叠部分不好判断,最后在CDD同学的帮助下想到可以根据高度来更新点。
     先把每段区间[x,h,y]的高度赋为h,如果右面的区间[x1,h1,y1]中,x1>x&&y1<y,取重叠部分[x1,y]的最大高度
max = h>h1?h:h1.
     具体过程可看代码......
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;struct Node
{int x,h,y;
};Node p[52];int main()
{int n,i,j,Max;int high[1010];while(~scanf("%d",&n)){memset(high,0,sizeof(high));Max=0;for(i=0;i<n;i++){scanf("%d%d%d",&p[i].x,&p[i].h,&p[i].y);for(j=p[i].x;j<p[i].y;j++){if(high[j]<p[i].h)high[j]=p[i].h;}if(Max<p[i].y)Max=p[i].y;}for(i=0;i<=1000;i++){//cout<<"high:"<<high[i]<<endl;if(high[i]&&high[i]!=high[i-1]){printf("%d %d",i,high[i]);if(i+1==Max)printf("\n");elseprintf(" ");}else if(high[i]&&high[i+1]==0){printf("%d 0",i+1);if(i+1==Max)printf("\n");elseprintf(" ");}}}return 0;
}

题解二:两层循环枚举

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<algorithm>
using namespace std;struct node
{int x;int y;int h;
}p[1010];int main()
{int n,i,j,k;int a,b,pp,qq;vector<node> q;while(~scanf("%d",&n)){b = 0,a = 0xfffffff;for(i=0;i<n;i++){scanf("%d%d%d",&p[i].x,&p[i].h,&p[i].y);if(p[i].x<a)a = p[i].x;if(p[i].y>b)b = p[i].y;}qq = 0;for(i=a;i<=b;i++){pp = 0;for(j=0;j<n;j++){if(i>=p[j].x && i<p[j].y){if(p[j].h > pp)pp = p[j].h;}}if(pp!=qq){node v;v.x = i;v.y = pp;q.push_back(v);qq = pp;}}for(i=0;i<q.size()-1;i++)cout<<q[i].x<<" "<<q[i].y<<" ";cout<<q[q.size()-1].x<<" "<<q[q.size()-1].y<<endl;q.clear();}return 0;
}

转载于:https://www.cnblogs.com/lavender913/p/3332059.html

计算机辅助设计(湖南省首届“湘邮科技杯”大学生程序设计大赛试题)相关推荐

  1. 湖南省第六届 中信软件教育杯 大学生程序设计大赛试题 第一题 汽水瓶

    汽水瓶 Time Limit: 1000ms, Special Time Limit:2500ms,Memory Limit:65536KB Total submit users: 31, Accep ...

  2. 第十一届GPCT杯大学生程序设计大赛完美闭幕

    刚刚过去的周六(6月7号)是今年高考的第一天,同时也是GPCT杯大学生程序设计大赛颁奖的日子,下面我们用图文再回顾一下本次大赛颁奖的过程. 评审过程的一些花絮<感谢各位评审这些天的付出!> ...

  3. 金莹江苏省计算机学会教授,2020年江苏省大学生程序设计大赛在我校举办

    11月15日,2020年江苏省程序设计大赛在河海大学举办.河海大学副校长董增川教授.江苏省计算机学会秘书长金莹教授出席闭幕式并致辞. 河海大学副校长董增川教授在致辞中表示,河海大学不断深化教育教学改革 ...

  4. 吉首大学第十届“新星杯”大学生程序设计大赛(暨新生网络同步赛)

    部分题解 前言 下午在群里面看到一个同学疯狂宣传这个比赛,处于好奇的态度(他说难度有cf1800)我参赛了,可能真的有cf1800的题目,只是我没做出来,离比赛还有十多分钟的时候到了吉首的OJ,注册了 ...

  5. 吉首大学第十届“新星杯”大学生程序设计大赛 A题题解

    这是一场很毒瘤的比赛. 鲁大师在一个星期前通知我们去打这场比赛,说名次高的有奖品,还说去年他们去参加这场比赛拿了前几名拿了个U盘-(疯狂暗示比赛很简单比赛很简单 ) 单纯的我真的信了 赛后得知这场比赛 ...

  6. 吉首大学第八届“新星杯”大学生程序设计大赛(暨新生网络同步赛)

    A-组合数 #include<stdio.h> #include<string.h> #define ll long long const int N=100; const i ...

  7. 吉首大学第八届“新星杯”大学生程序设计大赛 K: WaWa的难题(找规律)

    [题目] WaWa的难题 题目描述 HaHa和WaWa是好朋友,他们在临近期末的这段时间一起宅在图书馆学习. 今天HaHa在书上看到一个排列组合题目,思考很久后,仍然找不出其中的规律. 于是他把题目叙 ...

  8. 【简】题解 吉首大学第十一届“新星杯”大学生程序设计大赛

    传送门:OJ OJ 前言 A K题的大模拟实在写不动了 摸掉了(其实是其他作业叠太多了)等有空了再说吧 写得太烂  大佬们请不要介意 问题 A 咱俩下象棋去: 给你一个象棋盘  棋子的个数可能跟普通的 ...

  9. 吉首大学第八届“新星杯”大学生程序设计大赛部分解题报告

    问题 A: 组合数 题目描述 求组合数C(N,M),以及C(N,M)因子个数. 输入 N和M,其中0<=M<=N<=50,以EOF结束. 输出 该组合数结果 样例输入 Copy 3 ...

  10. 【反思】吉首大学第九届“新星杯”大学生程序设计大赛(暨新生网络同步赛)

    昨天(12.22)打了一场吉首大学的网络赛,本来是奔着rank40的U盘去的,结果只有rank80,这样的结果肯定是有问题的,经过一夜的反思,下面总结一下错误. 1.首先是第一题,也是最不应该的,就还 ...

最新文章

  1. Android事件分发机制详解
  2. ubuntu14.04 LTS 更新源
  3. 如何遍历字符串中的单词?
  4. java strategy模式,Java Strategy 模式简介
  5. 中兴面试一个星期没有回音_如何在没有回声的情况下从亚马逊获取即时时尚建议...
  6. org.apache.maven.archiver.MavenArchiver.getManifest
  7. 计算机中整数加法满足结合律吗
  8. tinymce vue 部分工具不显示_工具栏图标未在tinymce(4.0.1)文本编辑器中显示
  9. 我选择的是一种生活态度
  10. 最大子数列和的问题求解
  11. 02_行销(Marketing)里用逻辑回归来找寻顾客参与度后面的原因
  12. 计算机关机后自行启动,Win7官方旗舰版系统电脑关机后自动开机的解决办法
  13. wgs84坐标系和国内地图坐标系的转换
  14. 秒杀系统设计思路笔记
  15. 几大图片加载框架比较
  16. JS实现鼠标点击特效,五颜六色的小球绽放
  17. 字节跳动 C++面经总结第四期
  18. vue el-table高度 height自适应
  19. C练题笔记之:Leetcode-658. 找到 K 个最接近的元素
  20. 腾讯云SSL证书申请流程!

热门文章

  1. 北大oj-1423- Big Number
  2. skin文件启用智能提示的小技巧
  3. 产品设计体会(2002)产品设计的五个层次
  4. WiFi 连接到网络的过程
  5. linux缺页异常处理--内核空间
  6. 查找功能_苹果查找功能怎么查找另一台设备?很简单,只需这样操作
  7. android for 语句,Android中消息循环
  8. vue检测是不是360浏览器兼容模式_Vue项目兼容IE11
  9. 在布局空间标注的尺寸量不对_装修公司为什么要量房?量房到底在量什么?又该注意什么?...
  10. 通讯工程考研考计算机专业跨度大么,通信工程专业,与自动化专业差别大吗?考研可以跨考吗?...