hdu 1542 Atlantis(线段树,扫描线)

SAN存储与协议,了解SCSI、FC和ISCSI 在前面我们介绍SAN存储及iSCSI协议的时候了解到SAN存储其实是一个CS架构的系统。存储系统本身就是整个系统的服务端。以IP-SAN(也就是基于iSCSI的SAN存储)为例,其整体架构如图1所示。 图1 CS架构 对于存储系统来说,通常是由专业的存储厂商提供,比较知名的如EMC、NetAPP、IBM和日立等等。国内存储厂商也迅速崛起,比较知名的如华为、宏杉、浪潮和同友等等。另外,还有一些小的存储厂商,他们往往集中在某个领域,比如专注文件系统或者块存储等等。 除了专业的存储设备外,其实Linux 阅读详情

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1542

题意:n个矩阵,给出每个矩阵的左下和右上两个点的坐标,求出所有矩形总的覆盖面积。


扫描线问题,因为坐标是浮点型,那就必须把坐标离散化,我这直接上map了。

再来就是求这个面积的方式了:我这是向y轴映射,那么就保存每一条竖线,包扩该条竖线的x坐标,上下两个y坐标,还有用lr保存这条竖线是左边(1)那条还是右边(-1)那条,然后将所有的竖边按x从小到大排序,再一条一条地插入。看图:


先插入第一条竖边A1A2,再查询整棵数被覆盖的长度dy(即求出y坐标之差),这时候dy*(下一条边的x-插入这的条边的x)就等于第一部分的面积,以此类推。

插入A1A2可以求第一部分面积

插入B1B2可以求第二部分面积

插入C1C2可以求第三部分面积

最后一条不用插入

还有用1和-1标识左右边在这里也能看出来,当插入C1C2的时候,-1和插入A1A2时的1相抵消,表示这个区间不再覆盖,就避免了后面再计算时错误判断dy的值。

代码:

#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<map>
#define MAXN 1050
using namespace std;
struct ele
{
	double x,yu,yd;
	int lr;
	bool operator < (ele t) const
	{
		return x<t.x;
	}
}a[MAXN*2];
struct node
{
	int l,r;
	int cover;
}t[MAXN*5];
double yy[MAXN*2];
void construct(int l,int r,int p)
{
	t[p].l=l,t[p].r=r,t[p].cover=0;
	if(r-l<=1) return ;
	int m=(l+r)>>1;
	construct(l,m,p*2);
	construct(m,r,p*2+1);
}
void modify(int l,int r,int val,int p)
{
	if(t[p].l==l&&t[p].r==r)
	{
		t[p].cover+=val;
		return ;
	}
	int m=(t[p].l+t[p].r)>>1;
	if(r<=m)
		modify(l,r,val,p*2);
	else if(l>=m)
		modify(l,r,val,p*2+1);
	else
	{
		modify(l,m,val,p*2);
		modify(m,r,val,p*2+1);
	}
}
void query(double &ans,int p)
{
	if(t[p].cover)
	{
		ans+=yy[t[p].r]-yy[t[p].l];
		return ;
	}
	else if(t[p].r-t[p].l>=1)
	{
		t[p*2].cover+=t[p].cover,t[p*2+1].cover+=t[p].cover;
		query(ans,p*2);
		query(ans,p*2+1);
		t[p*2].cover-=t[p].cover,t[p*2+1].cover-=t[p].cover;
	}
}
int main()
{
	int n,i,j,cas=1;
	double x1,x2,y1,y2;
	map<double,int> hash;
	while(scanf("%d",&n)&&n)
	{
		for(i=1,j=1;i<=n;i++,j+=2)
		{
			scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
			a[j].x=x1,a[j].yd=y1,a[j].yu=y2;
			a[j].lr=1;
			a[j+1].x=x2,a[j+1].yd=y1,a[j+1].yu=y2;
			a[j+1].lr=-1;
			yy[j]=y1,yy[j+1]=y2;
		}
		sort(a+1,a+1+n*2);
		sort(yy+1,yy+1+2*n);
		int up=unique(yy+1,yy+1+2*n)-yy-1;
		for(i=1;i<=up;i++)
			hash[yy[i]]=i;
		double res=0,dy;
		construct(1,up,1);
		for(i=1;i<2*n;i++)
		{
			dy=0;
			modify(hash[a[i].yd],hash[a[i].yu],a[i].lr,1);
			query(dy,1);
			res+=dy*(a[i+1].x-a[i].x);
		}
		printf("Test case #%d\n",cas++);
		printf("Total explored area: %.2lf\n\n",res);
	}
	return 0;
}


18、基于FSDD数据集的深度学习案例分析 本文基于FSDD(Free Spoken Digit Dataset)数据集,系统介绍了深度学习在语音数字识别中的应用。内容涵盖动态与静态计算图的对比、数据预处理流程(包括数据增强、固定长度处理和归一化)、监督学习与无监督学习的模型构建与训练过程,并通过实验对比了不同网络架构的性能。文中使用PyTorch实现2层全连接网络和自编码器模型,展示了正则化技术对提升模型准确率的关键作用。最后总结了关键技术并提出了实际应用建议,展望了未来在复杂模型、多模态融合和实时应用方向的发展潜力。 阅读详情

相关推荐

掌握SiOME:从零构建OPC UA信息模型的完整指南

本文是掌握SiOME工具的完整指南,详细介绍了如何利用这款免费且强大的OPC UA建模工具,从零开始构建信息模型。内容涵盖从获取软件、创建命名空间、定义对象类型与变量,到添加方法、生成XML文件,并最终将其集成到开源的open62541服务器中。通过可视化建模,开发者可以高效、准确地设计复杂模型,大幅提升工业物联网与自动化项目的开发效率。

tcp8optimizer的博客 515

HDU 1542 [POJ 1151] Atlantis (矩形面积并)

Atlantis Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 16139    Accepted Submission(s): 6598 Problem Description There are severa

acmer_mozhu的博客 550

Windows 24H2升级后eNSP AR_40报错40?VirtualBox虚拟化修复指南

虚拟化技术通过Hypervisor在操作系统与硬件间建立抽象层,使虚拟机能够共享物理资源。其核心原理依赖CPU的VT-x/AMD-V指令集,而Windows 24H2对内核隔离与驱动签名的强化会直接占用或拦截这些虚拟化资源。在工程实践中,VirtualBox作为Type-2型Hypervisor,常因内存完整性开启或版本过旧导致虚拟网卡创建失败,进而引发设备启动中断。典型场景包括网络仿真实验、多系统测试环境搭建等。当eNSP的AR_40路由器依赖VirtualBox引擎时,24H2的安全策略变更便会触发错误

weixin_34375251的博客 216

Atlantis POJ 1151 HDU 1542

题目链接: POJ HDU There are several ancient Greek texts that contain descriptions of the fabled island Atlantis. Some of these texts even include maps of parts of the island. But unfortunately, thes

wood 453

华为OD机试_2025 B卷_模拟消息队列(Python,100分)(附详细解题思路)

时间排序:确保事件处理顺序正确消费者管理:集合操作高效维护状态优先级实现:利用消费者ID自然排序边界处理:正确处理空消费者情况。

测试工程师的成长之路 1119

网络安全 | 企业网络安全的十大挑战及解决方案

网络安全 | 企业网络安全的十大挑战及解决方案,随着信息技术的飞速发展,企业数字化转型进程不断加速,网络安全问题日益成为企业运营与发展面临的关键挑战。本文深入剖析企业网络安全的十大挑战,包括网络攻击日益复杂、数据泄露风险、内部威胁、物联网安全、云安全、合规性要求、移动办公安全、供应链安全、人才短缺以及安全预算有限等,并针对每个挑战详细阐述相应的解决方案,旨在为企业构建全面、有效的网络安全体系提供指导与参考,助力企业在复杂多变的网络环境中保障自身信息资产安全,实现可持续发展。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 4万+

Atlantis

题述《 http://poj.org/problem?id=1151 》 #include<stdio.h> #include<algorithm> using namespace std; struct line { double x1,y1,y2; int isl; }verl[257]; struct node { int l,r; dou...

莓尊尊strawberry 210

uniapp(微信小程序):实现PDF在线预览+在线预览pdf文件完整示例源码,支持文件来源:服务器pdf外链URL预览、调用后端API接口获取PDF文件流二进制下载及解析打开、上传本地PDF文件预览

uni-app实现PDF预览功能,uniapp微信小程序预览PDF,uniapp开发微信小程序在线预览pdf等文件,uniApp微信小程序实现PDF在线预览,Uniapp app在线预览pdf文件流,微信小程序实现pdf预览(苹果安卓兼容),uniapp-微信小程序 实现pdf外链在线预览,uniapp小程序如何做在线预览pdf功能,uniapp小程序端 实现pdf文件预览,微信小程序(uniapp)PDF预览完整实现方案示例demo源码,uni-app预览PDF,小程序pdf预览插件插件,Uniapp微信

✅ 精选推荐文章 4704

【HDU】1542 Atlantis 线段树+扫描线

代码如下: #include #include #include using namespace std ; #define ls ( o << 1 ) #define rs ( o << 1 | 1 ) #define rt o , l , r #define root 1 , 1 , n #define lson ls , l , m #define rson rs , m

poursoul 818

[QMT量化交易小白入门]-二、如何用miniQMT获取沪深A股的板块列表、历史行情数据和实时行情数据

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步,自己淋过雨了,希望大家都有一把伞。

木头大左的博客 5655

rk3576 适配摄像头 (mipi 双摄)

RK3576 自带两个 4-Lane DPHY 和一个 DCPHY CSI 接口,可以连接 4lane 的双摄像头,最直接的方式就是充分利用其两个 D-PHY 接口。次选方案是 DCPHY + DPHY方案,更次之方案是单DPHY,设置成分离模式,连接两颗摄像头。

weixin_35723192的博客 389

Atlantis - HDU 1542 扫描线

Atlantis Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 7210    Accepted Submission(s): 3173 Problem Description There are several

提比的强行AC 656

从 CDS 到对外接口:彻底吃透 SAP Business Service Definition 与 Service Binding

SAP ABAP开发中的Business Service(业务服务)已成为连接数据模型与外部消费的关键枢纽。Service Definition定义了要暴露的CDS实体,而Service Binding则负责将定义绑定到具体协议(如OData V2/V4)并发布为可消费服务。这种分层设计实现了同一服务定义在不同协议间的复用,符合SAP的解耦技术路线和Clean Core原则。从CDS视图到最终服务的完整链路清晰:先定义CDS模型,再通过Service Definition暴露实体,最后用Service Bi

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 159

hdu1542 Atlantis(线段树+扫描线)

线段树+扫描线 hdu1542 Atlantis 矩形的坐标不一定是整数 #include <iostream> #include <cmath> #include <algorithm> #include <cstring> #include <cstdio> #include <cstdlib> #include &lt...

weixin_44118043的博客 195

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

HDU - 1542 Atlantis (线段树+扫描线)

HDU - 1542 Atlantis (线段树+扫描线) There are several ancient Greek texts that contain descriptions of the fabled island Atlantis. Some of these texts even include maps of parts of the island. But unfortun...

weixin_43179892的博客 194

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

HDU - 1542 - Atlantis (线段树扫描线求矩形并)

题目连接: HDU - 1542 - Atlantis大佬博客讲解通过观察可以发现,以y轴为扫描线从下往上扫,若一个区间下边数量大于上边,则扫描的过程中这部分肯定算面积的,因此用线段树维护这样的区间就行了。#include<bits/stdc++.h> using namespace std; typedef double ld; const int N=207; int n,m; struct L

On the way 286

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

HDU 1542 Atlantis(线段树扫描线)

http://acm.hdu.edu.cn/showproblem.php?pid=1542 Atlantis Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6788    Accepted Submission(s):

fcbruce 1334

HDU1542-Atlantis【离散化&线段树&扫描线】个人认为很全面的详解

HDU1542-Atlantis【离散化&线段树&扫描线】个人认为很全面的详解 刚上大一的时候见过这种题,感觉好牛逼哇,这都能算 如今已经不打了,不过适当写写题保持思维活跃度还是不错的,又碰到这种题了,想把它弄出来 说实话,智商不够,看了很多解析,花了4、5个小时才弄明白 网上好多都是直说一半,弄得我很难受,需要查看很多题解不...

swallowblank的博客 267

Atlantis HDU - 1542(线段树扫描线)

There are several ancient Greek texts that contain descriptions of the fabled island Atlantis. Some of these texts even include maps of parts of the island. But unfortunately, these maps describe diff...

tomjobs的博客 480

HDU1542 Atlantis (线段树 + 扫描线)

题目链接:Atlantis 大致题意 现在有平面直角坐标系xoy, 有n个平行于x轴y轴的矩形, 给出这些矩形的左上角和右下角的坐标, 让你求出这些矩形组成的图形的总面积. 解题思路 本题是 线段树 + 扫描线 的典型例题, 是十分经典的模版题. 分析: 例如需要求下图所示的矩形的面积总和: 我们不妨将所有矩形的所有边都延长, 然后将整个坐标轴划分成一个个小区域: 然后再将这些小区域按照垂直于x轴的直线再次划分成一个个小矩形(如下图阴影所示): 现在我们需要计算的总面积可以拆分成图中阴影部分的面积之和

Fau的博客 841

HDU1542 Atlantis 【线段树】【扫描线入门】

题意 给你n个矩形,算出他们覆盖了多少面积 思路 总结一下扫描线的套路 把矩形的上下边 按照 左端点的x坐标 右端点的x坐标 高度 为上位边还是下位边存起来 当作扫描线 根据高度排序,从低到高,也就是y坐标 把所有x坐标都提取出来 排序离散化 线段树维护的节点 为x坐标某个区间内左端点 右端点 下位边的总长度 下位边的数量 如果扫描线下标为1~m 循环1 ~ m-1 m条扫描线 循...

OOOak 303

线段树扫描线 hdu1542 Atlantis

这几天线段树学习中,但是扫描线这一段一直没写出代码来 努力了好几天终于可以了 这里是写扫描线代码需要注意的地方: 1.每次插入一条线段的时候 只有当该线段和该节点表示的线段恰好相等的时候,才对mark标记一下,即使是区间包含插入的线段也要向下推。 2.不需要延迟标记,因为你插入了一条线段以后一定会完完全全的删除  3.每次更新的时候 ,先找到最底下一层(也就是插入线段和节点所管理的线段正好

beating_spark 281

HDU 1542 Atlantis 【线段树+扫描线】

题目链接 segment tree, scanning line 题意 矩形面积的并 分析 最基础的扫描线求矩形面积并的题,离散化后用线段树,这个思想很简单,不再赘述。记录在这里主要是这个线段树的写法,适用于区间反复覆盖,RE了很多次,记在这里方便以后查看。 AC代码 //HDU 1542 Atlantis //AC 2016-10-19...

babao9492的博客 174

HDU - 1542 Atlantis[线段树+扫描线]

题目描述 HDU - 1542 求矩阵面积并。 好久没写题解了。。。哎,这道题折腾了我好几天。。。 不知道为什么zcydalao讲的方法不太好使,我AC不了,可能是我菜吧。。。于是用了某本蓝书的方法,这种方法明显更加简单粗暴。 解析: 线段树+扫描线经典题。 遇到这种求矩形面积并或者某些平面轮廓的问题时,我们通常有一种一般方法——扫描线。 具体而言,就是先任意选一条坐标轴,用一根平行于它...

weixin_30396699的博客 175

HDU 1542 Atlantis(线段树:扫描线)

HDU1542 Atlantis(线段树:扫描线) 题意: 二维平面有n个平行于坐标轴的矩形,现在要求出这些矩形的总面积. 重叠部分只能算一次. 分析:        首先假设有下图两个矩阵,我们如果用扫描线的方法如何计算它们的总面积呢? 首先我们将矩形的上下边分为上位边(即y坐标大的那条平行于x轴的边),和下位边(y坐标小的平行于x轴的边).然后我们把所有矩形的上下位边按照他们y坐标

code 9792

HDU1542(扫描线+线段树)Atlantis

HDU1542 Atlantis(求矩形面积并) 原题链接 模板题: #include <bits/stdc++.h> #define ll long long using namespace std; int n,cnt[4*100000]; struct smx { double x1,x2,y; int value; } p[200005]; int cmp(sm...

翔哥哥的博客 229
上一篇: poj3667 Hotel (线段树区间合并)
下一篇: hdu 1732 Push Box(BFS)
yjCola
博客等级 码龄14年 4粉丝 138原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值