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

倒是一个容器都没用

裂了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/727697.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙开发岗成春招最大黑马,“金三银四”应届生如何突围?

一年一度春招时间到&#xff0c;技术岗位已成为众多人才竞相追求的“职业高地”&#xff0c;也是未来职业发展的重要方向之一。鸿蒙人才在春招市场上成为“香饽饽”&#xff0c;与往年不同的是&#xff0c;许多应届生放弃考公执念向程序员进攻&#xff0c;这一现象背后蕴含着深…

腾讯云服务器和阿里云服务器价格测评_2024年费用大PK

2024年阿里云服务器和腾讯云服务器价格战已经打响&#xff0c;阿里云服务器优惠61元一年起&#xff0c;腾讯云服务器61元一年&#xff0c;2核2G3M、2核4G、4核8G、4核16G、8核16G、16核32G、16核64G等配置价格对比&#xff0c;阿腾云atengyun.com整理阿里云和腾讯云服务器详细配…

day52(vueJS)json-server模拟数据

json-server介绍&#xff1a;&#xff1a;&#xff1a;JSON Server 是一个用于快速搭建 REST API 的工具&#xff0c;它可以帮助我们在开发过程中快速模拟 一个后端 API 服务器&#xff0c;方便前端开发人员进行接口调试和开发。使用 JSON Server&#xff0c;你可以通过创建一个…

【Go】golang值交换,指针

package mainimport "fmt"func swap(a *int, b *int) int {var o into *a*a *b*b oreturn o}func main() {var a int 1var b int 2swap(&a, &b)fmt.Println(a, b) }这个函数接受两个整数指针作为参数&#xff0c;然后通过指针操作&#xff0c;交换它们所…

第三百八十七回

文章目录 1. 概念介绍2. 使用方法3. 示例代码 我们在上一章回中介绍了DateRangePickerDialog Widget相关的内容,本章回中将介绍Radio Widget.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在这里说的Radio Widget是指单选按钮&#xff0c;没有选中时是圆形…

python 实现文件系统监控:实现文件增加、删除、修改的监听

在Python中&#xff0c;你可以使用watchdog库来实现文件系统监控功能。下面是一个基础的看门狗&#xff08;Watchdog&#xff09;示例&#xff0c;它会监视指定目录下的文件和子目录的变化&#xff0c;并对特定事件&#xff08;如文件创建、修改或删除&#xff09;做出响应&…

代码随想录算法训练营第二天|977、有序数组的平方

977. 有序数组的平方 已解答 简单 相关标签 相关企业 给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的新数组&#xff0c;要求也按 非递减顺序 排序。 示例 1&#xff1a; 输入&#xff1a;nums [-4,-1,0,3,10] 输出&#xff1a;[0,1,9,16,…

Linux设备模型(七) - Netlink

一&#xff0c;什么是netlink通信机制 Netlink套接字是用以实现用户进程与内核进程通信的一种特殊的进程间通信(IPC) ,也是网络应用程序与内核通信的最常用的接口。Netlink 是一种特殊的 socket&#xff0c;它是 Linux 所特有的。 Netlink 是一种在内核与用户应用间进行双向数…

我的创作周年纪念日

机缘 最初成为创作者的初心&#xff1a;整理自己的知识体系&#xff0c;普及前端知识 实战项目中的经验分享日常工作学习过程中的记录通过文章进行技术交流归纳和整理自己的知识体系 收获 创作的过程中收获&#xff1a; 获得了909粉丝的关注获得了很多正向的反馈&#xff0c…

【C语言】终の指针(前篇)

个人主页点这里~ 指针初阶点这里~ 指针初阶2.0点这里~ 指针进阶点这里~ 终の指针 一、回调函数二、qsort函数1、整形比较2、结构数据比较①结构体②-> 的使用③结构数据比较 一、回调函数 回调函数就是⼀个通过函数指针调用的函数。 把一个函数的指针作为参数传递给另一…

.NET 8.0:塑造未来的技术革新

随着科技的不断发展&#xff0c;.NET 框架作为微软推出的开源、跨平台开发框架&#xff0c;已经成为全球数百万开发者的首选工具。作为.NET 框架的最新版本&#xff0c;.NET 8.0 带来了许多令人振奋的新特性和改进&#xff0c;旨在帮助开发者构建更高效、更可靠的应用程序。本文…

dubbo3适配springboot2.7.3

版本详细 <dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo</artifactId><version>3.0.3</version> </dependency><parent><groupId>org.springframework.boot</groupId><artifactId&…

leetcode热题100刷题计划

题目3 无重复字符的最长子串 思路 滑动窗口&#xff0c;设定当前窗口左侧为i&#xff0c;右侧为right&#xff0c;当到达右侧边界时&#xff0c;记录长度&#xff0c; 然后删掉最左侧的字符&#xff0c;即i1&#xff1b;right则继续向后搜。 代码 public int lengthOfLong…

面试题之——Cookie和Session的区别

面试题之——Cookie和Session的区别 一.存储位置 Cookie存储在客户端&#xff08;浏览器&#xff09;当中Session存储在服务器当中 二.安全性 Cookie由于存储在客户端当中&#xff0c;Cookie数据可以被用户或其他恶意程序直接访问和修改&#xff0c;因此存在被窃取或篡改的…

mysql数据库入门到精通-Windows版本mysql安装(1)

文章目录 一、数据库介绍1.1、数据库概念1.2、为什么要使用数据库1.3、关系型数据库与非关系型数据库1.4、数据库术语1.5、mysql下载及地址 二、安装mysql数据库三、mysql的管理工具3.1、mysql command line client使用 四、SQL结构化查询语言4.1、SQL概述4.2、SQL发展4.3、SQL…

水牛社:专为创业者和网赚小白精心打造的助手

近几年来&#xff0c;经济发展快是快&#xff0c;物价也在蹭蹭往上涨&#xff0c;但工资却不见明显提升&#xff0c;随着生活成本的增加&#xff0c;单单靠工资&#xff0c;已经很难维持生活开支&#xff0c;加之疫情的影响&#xff0c;很多行业发展不景气&#xff0c;一些岗位…

医学大数据|统计基础|医学统计学(笔记):开学说明与目录

开始学习统计基础&#xff0c;参考教材&#xff1a;医学统计学第五版 点点关注一切来学习吧 责任编辑&#xff1a;医学大数据刘刘老师&#xff1a;头部医疗大数据公司医学科学部研究员 邮箱&#xff1a;897282268qq.com 久菜盒子工作室 我们是&#xff1a;985硕博/美国全奖…

python 输入和输出

在 Python 中&#xff0c;输入和输出是最基本的操作之一。你可以使用内置函数 input() 来获取用户输入&#xff0c;使用 print() 函数来输出信息到控制台。 输入&#xff08;Input&#xff09; input() 函数用于从用户那里获取输入。这个函数会将用户的输入作为字符串返回。 示…

安装sqlserver2022最新版只能使用.\SQLEXPRESS登录数据库怎么修改成.

.\SQLEXPRESS “服务器名称 localhost\SQLEXPRESS”中的 “SQLEXPRESS”就是数据库的实例名称/数据库名/服务器名&#xff0c; “localhost”即登录本计算机安装的数据库 安装sqlserver2022最新版只能使用.\SQLEXPRESS登录数据库怎么修改成. 2、查看SQL Server数据库的实例名…

2024年腾讯云学生服务器活动详细说明、学生机购买流程

2024年腾讯云学生服务器优惠活动「云校园」&#xff0c;学生服务器优惠价格&#xff1a;轻量应用服务器2核2G学生价30元3个月、58元6个月、112元一年&#xff0c;轻量应用服务器4核8G配置191.1元3个月、352.8元6个月、646.8元一年&#xff0c;CVM云服务器2核4G配置842.4元一年&…