hdu 1255 覆盖的面积(线段树|扫描线)

视频编解码——视频编解码器工作原理 目录什么是视频编解码器为什么需要视屏编解码器视频编码器与数字视频容器时评编码器的历史 什么是视频编解码器 简单来说就是用于压缩或解压数字视频的软件或硬件 编码是信息从一种形式或格式转换为另一种形式的过程,解码是编码的反向。 适用于视频 编码是将视频、音频的原始格式的文件通过压缩技术转换成另一种格式(视频如h.264,h.265,m-jpeg等)。 解码是编码的反向过程。应用中,一般是将h.264,h.265格式数据解码成如YUV格式裸流交给显示器显示。 为什么需要视屏编解码器 需要在有限的带宽或存储空间 阅读详情

覆盖的面积

Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 5242    Accepted Submission(s): 2646


Problem Description
给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积.


 

Input
输入数据的第一行是一个正整数T(1<=T<=100),代表测试数据的数量.每个测试数据的第一行是一个正整数N(1<=N<=1000),代表矩形的数量,然后是N行数据,每一行包含四个浮点数,代表平面上的一个矩形的左上角坐标和右下角坐标,矩形的上下边和X轴平行,左右边和Y轴平行.坐标的范围从0到100000.

注意:本题的输入数据较多,推荐使用scanf读入数据.
 

Output
对于每组测试数据,请计算出被这些矩形覆盖过至少两次的区域的面积.结果保留两位小数.
 

Sample Input
2 5 1 1 4 2 1 3 3 7 2 1.5 5 4.5 3.5 1.25 7.5 4 6 3 10 7 3 0 0 1 1 1 0 2 1 2 0 3 1
 

Sample Output
7.63 0.00
 

题目大意:求n个矩形重叠覆盖的面积

思路:线段树+离散化+扫描线(线段树求矩形面积并升级版)

代码如下:

#include<cstdio>   
#include<cstring>   
#include<iostream>  
#include<algorithm>  
using namespace std;  
const int maxn=1000005;  
double eps=1e-8;
int mark[maxn<<2];
double sum[maxn<<2],cntsum[maxn<<2],thash[maxn];
struct node  
{  
    double l,r,h;  
    int cover;  
    node(){}  
    node(double a,double b,double c,int d):l(a),r(b),h(c),cover(d){}  
    bool operator <(const node&x)const  
    {  
        return h<x.h;  
    }  
}s[maxn<<2];  
void updatefather(int pos,int l,int r)  
{ 
	//printf("pos=%d l=%d r=%d cnt=%d\n",pos,l,r,mark[pos]) ;
	if(mark[pos])sum[pos]=thash[r+1]-thash[l];
	else if(l==r)sum[pos]=0;
	else sum[pos]=sum[pos<<1]+sum[pos<<1|1];
    if(mark[pos]>1)cntsum[pos]=thash[r+1]-thash[l];
    else if(l==r)cntsum[pos]=0;
    else if(mark[pos]==1)cntsum[pos]=sum[pos<<1]+sum[pos<<1|1];
    else if(mark[pos]==0)cntsum[pos]=cntsum[pos<<1]+cntsum[pos<<1|1];
    //printf("sum=%lf cntsum=%lf\n",sum[pos],cntsum[pos]);
}  
void update(int pos,int l,int r,int ql,int qr,int value)  
{  
    if(ql<=l&&r<=qr)  
    {     
        mark[pos]+=value;  
        updatefather(pos,l,r);  
        return;  
    }  
    int mid=(l+r)>>1;  
    if(ql<=mid)update(pos<<1,l,mid,ql,qr,value);  
    if(qr>mid)update(pos<<1|1,mid+1,r,ql,qr,value);  
    updatefather(pos,l,r);  
}  
int main()  
{  
    int n,T;  
    scanf("%d",&T);
    while(T--)  
    {  
		scanf("%d",&n);
	    memset(mark,0,sizeof(mark));
        int m=0,num=2;  
        double x1,x2,y1,y2,ans=0;  
        for(int i=0;i<n;i++)  
        {  
            scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);  
            s[m]=node(x1,x2,y1,1);  
            thash[++m]=x1;  
            s[m]=node(x1,x2,y2,-1);  
            thash[++m]=x2;  
        }  
        sort(s,s+m);  
        sort(thash+1,thash+1+m);  
        for(int i=2;i<=m;i++)if(thash[i]!=thash[i-1])thash[num++]=thash[i];  
        for(int i=0;i<m;i++)  
        {  
            int L=lower_bound(thash+1,thash+num,s[i].l)-thash;  
            int R=lower_bound(thash+1,thash+num,s[i].r)-thash-1;   
            if(i)ans+=cntsum[1]*(s[i].h-s[i-1].h);  
            //cout<<cntsum[1]<<endl;
            update(1,1,num-1,L,R,s[i].cover);  
        }  
        printf("%.2lf\n",ans+eps);  
    }  
}  


18、公开可用的PPG数据库介绍 本文介绍了多个公开可用的PPG(光电容积描记)数据库,包括PPG-BP数据库、MIMIC II波形数据库、运动期间手腕PPG数据库以及指尖PPG与呼吸数据库等。这些数据库提供了丰富的生理信号数据,适用于动脉血压检测、呼吸频率估计、运动干扰去除以及基于PPG的生物特征识别等研究。每个数据库的数据来源、受试者信息、信号特点和下载方式均有详细介绍,并展示了如何利用这些数据库进行信号分析和算法评估。 阅读详情

相关推荐

cadence Virtuoso ADE原理图库中的VCVS(压控电压源)使用

Symbol: vcvs (Voltage Controlled Voltage Source) Vop−Von=egain⋅(Vip−Vin)V_{op}-V_{on}=egain\cdot(V_{ip}-V_{in})Vop​−Von​=egain⋅(Vip​−Vin​) 所以可以得出 ⟹Vop=egain⋅(Vip−Vin)+Von\Longrightarrow V_{op}=egain\cdot(V_{ip}-V_{in})+V_{on}⟹Vop​=egain⋅(Vip​−Vin​)+Von​ 使

大学生视野 2万+

hdu-2461-Rectangles(容斥)

hdu-2461-Rectangles(容斥)

Seeker 585

IPD的分析工具与模型(十六)CBB公用基础模块管理实现资源共享,缩短开发周期

CBB流程的开发环节,基于CBB规划中所识别和设计的CBB,进行CBB的详细设计(包括参数设计和接口设计),并最终实现CBB的落地开发。作为特殊类型的技术构件,CBB的开发流程,可沿用技术开发中的构件开发流程,具体包括概念、计划、开发和迁移等步骤,具体可参见前文的相关介绍。有了蓝图与架构设计,落地实施是关键攻坚。具体工作内容包括:具体工作内容包括:a. 以相似性、聚类、相对独行性、可组合、可扩展性、可维护性等原则为指导,按照产品的功能特征和业务类型,聚焦零散的功能点,形成功能模块,实现产品功能模块的划分;

corgi2020的博客 2000

HDU 1255 覆盖的面积(线段树+扫描线求面积【升级版】)

http://www.cnblogs.com/scau20110726/archive/2013/04/14/3020998.html 这讲得太好了,感觉做了这题对于面积覆盖的题更理解了 之前写过 HDU 1542 是单纯的的求面积,这题在单纯的求面积上小小改动即可求两次覆盖以上的面积 两份代码对比下: HDU 1542 #define mem(a,x) memset(a,x,sizeo

Must so 1460

(精读)揭示多元时间序列的高阶组织

时间序列分析已经被证明是刻画生物学、神经科学和经济学中的一些现象以及理解它们的一些潜在动力学特征的有力方法。尽管针对多元时间序列的分析已经提出了很多方法,但大多数方法都忽略了非成对相互作用对涌现动力学的影响。在这里,我们提出了一个新的框架来刻画多元时间序列中高阶依赖关系的时间演化。利用网络分析和拓扑学,我们表明,与传统的基于成对统计的工具不同,我们的框架鲁棒地区分了耦合混沌映射的各种时空状态,包括混沌动力学阶段和各种类型的同步。

weixin_53406075的博客 2412

在安装之后使用labelme出现qtpy.PythonQtError:No Qt bindings could be found错误

我在base环境(python3.7)可成功安装和使用labelme,而在同py37版本和py36的虚拟环境中可安装labelme包,但在使用的时候出现报错,如下: 我尝试着去解决第一个错误提示,错误提示为:moduleNotFoundError:No module named ‘PySide’,结果掉入了一个无止无尽的坑,看到网上有朋友说这个只能在py27-py35才能安装,还有说需要VC+ 140等,他们说的这个解决方案只针对于这个缺包的描述,而我们仅仅只需要一个labelme,因此我直接对后面的错误

qq_33538651的博客 9815

HDU1255 覆盖的面积(线段树+扫描线+离散化)

HDU1255 覆盖的面积(线段树+扫描线+离散化) 模板题 给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积. Input 输入数据的第一行是一个正整数T(1<=T<=100),代表测试数据的数量.每个测试数据的第一行是一个正整数N(1<=N<=1000),代表矩形的数量,然后是N行数据,每一行包含四个浮点数,代表平面上的一个矩形的左上角坐标和右下角坐标,...

1262934560的博客 244

generate for与always内for:Verilog循环的静态生成与动态执行之辨

本文深入解析Verilog中generate for与always内部for循环的核心差异。generate for使用genvar变量在编译时静态生成硬件结构,适用于模块实例化;always内部for使用整型变量在运行时动态执行,综合为并行逻辑。理解这两种循环的适用场景和综合结果对提升数字电路设计质量至关重要。

yog99的博客 1087

HDU 1255 覆盖的面积 线段树+扫描线

覆盖的面积Time Limit:5000MS    Memory Limit:32768KB    64bit IO Format:%I64d & %I64u SubmitStatus Description 给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积.   Input 输入数据的第一行是一个正整数T(1<=T

colorfulshark 1042

【WorkBuddy专栏19】技能的创造与迁移——从零开始打造你的AI工作流

【WorkBuddy专栏19】技能的创造与迁移——从零开始打造你的AI工作流

AI人人懂 373

基于YOLO26/11/v8算法的Web目标检测系统,人脸表情识别系统,Django+Vue3 的前后端分离,实现摄像头实时识别,YOLO26/YOLO11/v8 + LLM大模型智能分析,科研必备

在人工智能迈向通用化(AGI)的今天,“视觉感知 + 语言理解”的多模态联合是未来的趋势。单纯的检测画框已经无法满足复杂的业务需求,如何让系统“看懂”画面并进行“思考”,是当前视觉项目的重点。我们知道目标检测是计算机视觉中的重要任务,广泛应用于安防监控、自动驾驶、智能家居等领域。因此本项目将 YOLO 目标检测模型(兼容 YOLO26/v11/v8 系列)与 DeepSeek 等顶流大语言模型(LLM) 进行联合,使用 Django (后端) + Vue3 (前端) 技术栈

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 2839

HDU 1255 覆盖的面积 (线段树 + 离散化 + 扫描线)

覆盖的面积 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 4304    Accepted Submission(s): 2139 Problem Description 给定平面上若干矩形,求出被这些矩形覆盖

qq_18661257的专栏 2164

11、机器学习中的聚类与隐马尔可夫模型

本文介绍了机器学习中的两种重要方法:聚类算法和隐马尔可夫模型(HMM)。聚类作为无监督学习的代表,适用于发现无标签数据中的结构,常见算法包括K-均值和自组织映射(SOM),并在传感器数据分析等场景中展现应用价值。隐马尔可夫模型则是一种可解释的序列模型,用于从观测数据中推断隐藏状态,广泛应用于语音识别、自然语言处理和生物信息学等领域。文章详细讲解了HMM的核心概念如马尔可夫性质、转移与发射概率,并通过TensorFlow实现了前向算法,展示了其计算观测序列概率的动态规划思想。最后对比了两类方法的应用场景,展望

garlic的博客 179

HDU 1255-覆盖的面积-线段树的扫描线算法

题目描述: 给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积. 输入描述: 输入数据的第一行是一个正整数T(1<=T<=100),代表测试数据的数量.每个测试数据的第一行是一个正整数N(1<=N<=1000),代表矩形的数量,然后是N行数据,每一行包含四个浮点数,代表平面上的一个矩形的左上角坐标和右下角坐标,矩形的上下边和X轴平行,左右边和Y轴平行.坐标的范围...

Nothing_but_Fight的博客 422

精雕软件(JDpaint) 5.5 绿色版

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

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

HDU 1255 覆盖的面积(线段树+扫描线)

题目地址:HDU 1255 这题跟面积并的方法很像,只不过需要再加一个变量。 刚开始我以为直接用那个变量就行,只不过判断是否大于0改成判断是否大于1。但是后来发现了个问题,因为这个没有下放,没延迟,比如,在父节点上加了一次1,在该父节点的子节点上又加了一次1,但是这时候所有的结点仍然没有达到2的,但是实际上子节点已经达到2了。这时候可以再加一个变量。那个变量用来保存覆盖数大于等于0的情况,这样

scf0920 1132

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

覆盖的面积 HDU - 1255(线段树,扫描线)

覆盖的面积 题目链接:HDU - 1255 题意:若干矩形重叠在一起,求出重叠部分的面积之和,如下图,求出红色区域面积; 之前算过整个图形的面积,而今要算重叠部分的面积,还是原来的思路,接着动用那条墨绿的扫描线; 和之前有些许不同的是扫描线要扫过两次才能出现重叠区域,那么如何用线段树维护区间[l, r]被覆盖次数大于1的长度呢? 先回想一下用线段树维护区间[l, r]被覆盖的长度的...

Sirius_han的博客 424

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

hdu 1542 Atlantis&&hdu 1255 覆盖的面积(扫描线入门)

扫描线需要用到的知识点:线段树、离散化 (没了) 下面就进入扫描线入门题讲解 扫描线一般运用在图形上面,它和它的字面意思十分相似,就是一条线在整个图上扫来扫去,它一般被用来解决图形面积,周长等问题。 hdu 1542 Atlantis There are several ancient...

weixin_44003265的博客 323

覆盖的面积 HDU - 1255 线段树 扫描线

改模板成功~ #include<bits/stdc++.h> using namespace std; const int N=100005; struct P{ double x,y,z; int k; bool operator<(const P w)const { return x<w.x; } }a[N<<1];//2N个四元组 do...

skyline的分享专栏 152

hdu 1255 覆盖的面积 (线段树 扫描线)

题意: 给你n个矩形的左上角坐标和右下角坐标问你复合矩形中覆盖过至少两次的区域的面积.思路:还是扫描线,不过线段树中多存了一个变量,ss表示的是覆盖过至少两次的面积,他是怎么算出来的呢?首先我们的线段树里有一个cnt变量如果他不等于0就表示他的区间被完全覆盖,那么当他的cnt&gt;1就表示他被完全覆盖了至少两次以上那么我们就可以合并ss的长度,如果等于1呢?就表示他的整个区间被覆盖了一次,那么我...

wjmwsgj的博客 233

hdu1255 覆盖的面积 (线段树扫描线, 矩形覆盖至少两次的面积)

问题描述 给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积. Input 输入数据的第一行是一个正整数T(1<=T<=100),代表测试数据的数量.每个测试数据的第一行是一个正整数N(1<=N<=1000),代表矩形的数量,然后是N行数据,每一行包含四个浮点数,代表平面上的一个矩形的左上角坐标和右下角坐标,矩形的上下边和X轴平行,左右边和Y轴平行.坐标的范围从...

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 495

线段树 扫描线 HDU 1255 覆盖的面积

题目链接 : http://acm.hdu.edu.cn/showproblem.php?pid=1255 代码风格:http://www.notonlysuccess.com/index.php/segment-tree-complete/ 算法:线段树 扫描线、 思路:记录下每个节点覆盖了一次的长度和覆盖了多次的长度 #include #include #include #in

ACmood 597

覆盖的面积 HDU - 1255(扫描线 线段树)

传送门 求面积的交. 做法应该不难想到,用扫描线维护被覆盖了两次的线段长度. 面积的并的做法应该不陌生.维护覆盖一次的线段长度就ok了.没做过的可以看这篇博客的后面关于扫描线算法的讲解. ...

weixin_45590210的博客 181

HDU1255覆盖的面积(线段树+扫描线求面积)

给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积. Input 输入数据的第一行是一个正整数T(1<=T<=100),代表测试数据的数量.每个测试数据的第一行是一个正整数N(1<=N<=1000),代表矩形的数量,然后是N行数据,每一行包含四个浮点数,代表平面上的一个矩形的左上角坐标和右下角坐标,矩形的上下边和X轴平行,左右边和Y轴平行.坐标的范...

ccsu_deer 503

HDU 1255-覆盖的面积(线段树+扫描线)

C - 覆盖的面积 Time Limit:5000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 1255 Appoint description:  System Crawler  (2016-04-30) Description

梧桐下的四叶草 907

HDU-1255 覆盖的面积 线段树 + 扫描线

求矩形面积交 主要是扫描线不太懂 纠结了很久   #include "stdio.h" #include "algorithm" using namespace std; const int maxn = 2010; int n; double y[maxn]; struct node { double x,y1,y2; //x 边的位置 y边的区间大小

菜鸟成长ing 1588

HDU1255-覆盖的面积(线段树+扫描线——面积交)

覆盖的面积 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 5801    Accepted Submission(s): 2899 Problem Description 给定平面上若干矩形,求出被这些矩形覆盖

gyr 312
上一篇: hdu 3001 Travelling
下一篇: poj1222 EXTENDED LIGHTS OUT (高斯消元)
overload1997
博客等级 码龄11年 328粉丝 210原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值