Urban Elevations(UBA-211)

2024-03-08 00:04
文章标签 211 urban elevations uba

本文主要是介绍Urban Elevations(UBA-211),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

网址如下:

Urban Elevations - UVA 221 - Virtual Judge (vjudge.net)

第三方网站的

说实话,我看英语看得头大

最近学了一堆stl的容器,比如map,set啥的,方便是很方便,但是导致我脑子里第一个念头就是用他,思维有点局限了

我的代码如下:

#include<vector>
#include<cstdio>
#include<set>
#include<map>
#include<algorithm>
using namespace std;
struct Building{double x1, x2, y, h; 
};int main(void)
{int kase = 0, n;while(scanf("%d", &n) == 1 && n){if(kase) putchar('\n');printf("For map #%d, the visible buildings are numbered as follows:\n", ++kase);//输入vector<Building> buildings;set<double> x_list;buildings.push_back(Building());for(int i = 0; i < n; i++){double x, y, w, d, h;scanf("%lf%lf%lf%lf%lf", &x, &y, &w, &d, &h);Building tmp{x, x + w, y, h};buildings.push_back(tmp), x_list.insert(tmp.x1), x_list.insert(tmp.x2);}//离散化xmap<double, vector<int>> xToBd;for(auto it = x_list.begin(); true; ){double mid = *it;if(++it == x_list.end()) break;mid = (mid + *it) / 2.0;xToBd[mid] = vector<int>();}//开始按y排序各离散化的x点中的建筑for(auto it = xToBd.begin(); it != xToBd.end(); it++){for(int i = 1; i <= n; i++)if(buildings[i].x1 <= it->first && it->first <= buildings[i].x2){bool is_pushback = true;for(auto it2 = it->second.begin(); it2 != it->second.end(); it2++){int ID1 = i, ID2 = *it2;if(buildings[ID1].y < buildings[ID2].y){it->second.insert(it2, ID1), is_pushback = false; break;}}if(is_pushback) it->second.push_back(i);}}//总和结果vector<int> result;bool * is_judge = new bool [n + 1]();for(auto it = xToBd.begin(); it != xToBd.end(); it++){double max_h = 0.0;for(int i = 0; i < it->second.size(); i++){int ID = it->second[i];if(max_h < buildings[ID].h){max_h = buildings[ID].h;if(!is_judge[ID]) result.push_back(ID), is_judge[ID] = true;}}}delete [] is_judge;//输出for(auto it = result.begin(); it != result.end(); it++){if(it != result.begin()) putchar(' '); printf("%d", *it);}putchar('\n');}return 0;
}

放眼望去,一堆模板

而且没过

算法书的示例代码如下:

#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn = 100 + 5;
struct Building{int id;double x, y, w, d, h;bool operator<(const Building &rhs) const{return x < rhs.x || (x == rhs.x && y < rhs.y);}
}b[maxn];
int n;
double x[maxn * 2];
bool cover(int i, double mx){return b[i].x <= mx && b[i].x + b[i].w >= mx;
}//判断建筑i在x = mx处是否可见
bool visible(int i, double mx){if(!cover(i, mx)) return false;for(int k = 0; k < n; k++)if(b[k].y < b[i].y && b[k].h >= b[i].h && cover(k, mx)) return false;return true;
}int main(void)
{int kase = 0;while(scanf("%d", &n) == 1 && n){for(int i = 0; i < n; i++){scanf("%lf%lf%lf%lf%lf", &b[i].x, &b[i].y, &b[i].w, &b[i].d, &b[i].h);x[i * 2] = b[i].x, x[i * 2 + 1] = b[i].x +b[i].w;b[i].id = i + 1;}sort(b, b + n);sort(x, x + n * 2);int m = unique(x, x + n * 2) - x;//去重,得到m个坐标if(kase++) putchar('\n');printf("For map #%d, the visible buildings are numbered as follows:\n%d", kase, b[0].id);for(int i = 1; i < n; i++){bool vis = false;for(int j = 0; j < m - 1; j++)if(visible(i, (x[j] + x[j + 1]) / 2)){vis = true; break;}if(vis) printf(" %d", b[i].id);}putchar('\n');}return 0;
}

emmmm

倒是一个容器都没用

裂了

这篇关于Urban Elevations(UBA-211)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/785284

相关文章

反射机制_介绍_Class对象获取_动态操作_构造器_方法_属性JAVA211-212

来源:http://www.bjsxt.com/ 一、S02E211_01反射机制_介绍_Class对象获取 反射机制 Class类介绍 获取Class类的对象 package com.test.reflection;/*** 测试各种类型(class,interface,enum,annotation,primitive type,void)对应的java.lang.

【最新消息】211高校,拟撤销测绘工程专业

近日,中国石油大学(北京)教务处发布《关于公示2024年度拟撤销本科专业的通知》,拟撤销音乐学、建筑学、测绘工程等9个本科专业。     通知内容如下:   根据《教育部高等教育司关于开展2024年度普通高等学校本科专业设置工作的通知》文件要求,经充分征求各教学单位意见,拟撤销音乐学等9个本科专业(见附表),现予以公示。   公示时间2024年8月20日至8月26日,公示期间内如

基于QT与STM32的电力参数采集系统(华为云IOT)(211)

文章目录 一、前言1.1 项目介绍【1】开发背景【2】项目实现的功能【3】项目硬件模块组成 1.2 设计思路【1】整体设计思路【2】整体构架【3】上位机开发思路【4】供电方式 1.3 项目开发背景【1】选题的意义【2】可行性分析【3】参考文献【4】摘要 1.4 开发工具的选择【1】设备端开发【2】上位机开发 1.5 系统框架图1.6 系统功能总结1.7 设备原理图1.8 硬件实物图 二、硬件

hdu-211-Secret Number

#include<stdio.h> int main() { int n,f=0; while(scanf("%d",&n)!=EOF) { int t,sum=0; while(n) { t=n%10; if(t%2==0) sum+=t; n/=10; } if(f) { printf("\n");

力扣题解-211. 添加与搜索单词 - 数据结构设计

题目:211. 添加与搜索单词 - 数据结构设计 请你设计一个数据结构,支持 添加新单词 和 查找字符串是否与任何先前添加的字符串匹配 。 实现词典类 WordDictionary : WordDictionary() 初始化词典对象 void addWord(word) 将 word 添加到数据结构中,之后可以对它进行匹配 bool search(word) 如果数据结构中存在字符串与 w

一个普通211本科生找工作的那些事儿!

不知道从何写起,就从大三下开始写吧!能回忆起什么就写什么: 3月份,自己从家里来到学校,本着和家里人商量好的考研,来了学校之后,开始着手准备考研!之间只参加了腾讯的实习生面试;遗憾,准备不充分,二面被刷!那就专心准备考研好了,别的公司实习生也就也没有去申请! 那么我为什么选择考研呢,而自己的前两年半的时间都是以工作的心态去度过大学生活的,大三下来了一个急转弯,让一些朋友感觉不可思议!原因有三:

首套真题解析!安徽211难度适中!两门课!

这个系列会分享名校真题。并做详细解析!此为24年第一套! 今天分享的是22年合肥工业856的信号与系统试题及解析。 小马哥Tips: 本套试卷难度分析:本套试题内容难度中等,里面较多的考察了信号与系统的知识,小部分考察了数字信号处理的知识。题量中等,主要考察定义的认识和运用以及零输入零状态的求解,和复频域变换和傅里叶级数的表示法,因此运用定义求解,掌握好常用变换对是必不可少的。 一、本套真

[BUG历险记] ERROR: [SIM 211-100] CSim failed with errors

问题重现 在开发HLS过程中,我碰到一个奇怪的现象,同样的工程,在我重装完系统后,不能进行C仿真了,但是综合实现都是可以正常运作的。 vitis的报错也非常奇怪,单单一行: ERROR: [SIM 211-100] CSim failed with errors 真实,惜字如金呀。 解决方案 经过摸索排查,发现原来是我的环境没有配置好,刚重装完ubuntu,没有去配置gcc和make。

LeetCode 题解(211) : Expression Add Operators

题目: Given a string that contains only digits 0-9 and a target value, return all possibilities to add binary operators (not unary) +, -, or * between the digits so they evaluate to the target value

211初试自命题复试线仅302分!延边大学计算机考研考情分析!

延边大学(Yanbian University),简称“延大”,地处吉林省延边朝鲜族自治州,是国家“双一流”建设高校、国家“211工程”重点建设大学、西部开发重点建设院校、吉林省人民政府和教育部共同重点支持建设大学、吉林省人民政府和国家民族事务委员会共同重点支持建设大学、吉林省特色高水平应用研究型A类大学,入选中西部高校基础能力建设工程、国家建设高水平大学公派研究生项目、卓越医生教育培养计划、卓越