POJ 1151 Atlantis

POJ 1151 - Atlantis 线段树+扫描线.. 离散化: 将所有的x轴坐标存在一个数组里..排序.当进入一条线段时..通过二分的方式确定其左右点对应的离散值...    扫描线..可以看成一根平行于x轴的直线..至y=0开始往上扫..直到扫出最后一条平行于x轴的边..但是真正在做的时候..不需要完全模拟这个过程..扫描线的做法是从最下面的边开始扫到最上面的边.    线段树: 本题用于动态维护扫描线在往上走时..x哪些区域是有合法面积的.. 阅读详情

/*
http://acm.pku.edu.cn/JudgeOnline/problem?id=1151
离散化方法
思想是将整个地图划分为最小的子方格,然后将子方格的面积相加即可得到最终结果

1)首先分别将输入数据的x坐标和y坐标保存到x和y数组里面,然后对这两个数组排序
2)然后遍历所有矩形,对于矩形(x1, y1)(x2, y2), 分别遍历x数组和y数组,对于所有
满足满足x1 <= x[i] <= x2 y1 <= y[j] <= y2的i, j将uniquePoint[i][j]设置为1,
表示这个点属于有效离散点,然后统计所有离散区间面积:
res += uniquePoint[i][j] * (x[i + 1] - x[i]) * (y[i + 1] - y[i])
*/
#include <iostream>
#include <algorithm>
#include <iomanip>
#define MAX_N 100

double x[MAX_N * 2 + 1];
double y[MAX_N * 2 + 1];

double recTangle[MAX_N + 1][4];
int uniquePoint[MAX_N * 2 + 1][MAX_N * 2 + 1];

int recNum;
using namespace std;

int main()
{
    int i, j, caseNum = 0;
    while(cin>>recNum && recNum != 0)
    {
        caseNum++;
        for(i = 0; i < recNum; i++)
        {
            cin>>recTangle[i][0]>>recTangle[i][1]>>recTangle[i][2]>>recTangle[i][3];
            x[i * 2] = recTangle[i][0];
            x[i * 2 + 1] = recTangle[i][2];
            y[i * 2] = recTangle[i][1];
            y[i * 2 + 1] = recTangle[i][3];
        }
        memset(uniquePoint, 0, sizeof(uniquePoint));
        sort(x, x + 2 * recNum);
        sort(y, y + 2 * recNum);
        for(i = 0; i < recNum; i++)
        {
            double x1 = recTangle[i][0], y1 = recTangle[i][1], x2 = recTangle[i][2], y2 = recTangle[i][3];
            int px1, px2, py1, py2;
            for(px1 = 0; px1 < recNum * 2; px1++)
            {
                if(x[px1] == x1)
                    break;
            }
            for(px2 = 0; px2 < recNum * 2; px2++)
            {
                if(x[px2] == x2)
                    break;
            }
            for(py1 = 0; py1 < recNum * 2; py1++)
            {
                if(y[py1] == y1)
                    break;
            }
            for(py2 = 0; py2 < recNum * 2; py2++)
            {
                if(y[py2] == y2)
                    break;
            }
            int p1, p2;
            for(p1 = px1; p1 < px2; p1++)
            {
                for(p2 = py1; p2 < py2; p2++)
                    uniquePoint[p1][p2] = 1;
            }
        }
        double res = 0;
        for(i = 0; i < recNum * 2; i++)
            for(j = 0; j < recNum * 2; j++)
                res += uniquePoint[i][j] * (x[i + 1] - x[i]) * (y[j + 1] - y[j]);
        cout<<"Test case #"<<caseNum<<endl;
        printf("Total explored area: %.2f/n/n", res);
    }
    return 0;
}

 

VTK实战完整教程介绍 该专栏以VTK提供的Example为基础,讲解VTK中的相关接口和使用方法。订阅该专栏,带你了解所有VTK的功能,以便VTK更好的解决工作中遇到的问题。一起学习起来吧! 阅读详情

相关推荐

OpenCvSharp之利用海康相机采集图像并在pictureBox中显示

OpenCvSharp之利用海康相机采集图像并在pictureBox中显示 说明:OpenCvSharp版本为4.0 海康相机为黑白相机 实现功能:将海康相机采集的图像转成Mat,并在pictureBox中显示。 示例代码: Mat srcImage; private Mat CaptureImage() { int nRet; //MyCamera.MVCC_I...

Kevin_Sun777的博客 5502

POJ 1151 Atlantis(扫描线)

POJ 1151 Atlantis Description 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 different regions of Atlantis.

NaNa 289

Windows游戏玩家必看:用Process Lasso优化CPU优先级和核心绑定,告别卡顿

本文为Windows游戏玩家详细介绍了如何使用Process Lasso优化系统性能。通过设置CPU优先级和核心绑定,可以智能管理进程资源,确保游戏获得最高调度权限,有效减少因后台程序干扰或Windows调度机制不完善导致的卡顿与帧数波动,从而提升游戏流畅度与稳定性。

weixin_29299807的博客 2218

poj 1151 Atlantis

poj 1151 Atlantis Time Limit: 1000MS   Memory Limit: 10000KB   64bit IO Format: %I64d & %I64u [Submit]

codeStone 1117

Yolov5自定义图片训练测试及模型调优(详细过程)

Yolov5自定义数据训练及测试1. 图像数据获取、标注2. 数据集划分及准备3. 配置训练参数,准备训练:3.1 修改data/训练配置xxx.yaml文件:3.2 修改models模型配置xxx.yaml文件4. 开始训练5. 测试训练后的模型: 1. 图像数据获取、标注 如果自定义训练自己的数据集,首先需要数据标注,至于数据来源可以是下载现有的开发数据集、拍照、爬虫等等。 如果是拍照、爬虫等获取的数据图片,需要进行数据标注,这个过程可以使用工具来做,但也需要一些手动操作 。。并且图片越多越好,如果

HowieXue 薛永浩的博客 10万+

031、速度前馈与加速度前馈

摘要: 本文通过追剪机调试案例,阐述了速度前馈和加速度前馈在运动控制中的关键作用。前馈不是高级技巧,而是解决动态响应问题的必要手段:速度前馈通过预测速度变化提前补偿,加速度前馈则针对惯量变化提供力矩补偿。实现时需注意信号平滑处理,避免噪声放大。前馈与PID分工明确,前馈承担主要动态响应,PID处理残余误差。调试应先调前馈再微调PID,前馈增益需计算而非仅凭参数调整,并允许适当残余误差。前馈作为开环补偿不会影响系统稳定性,但需配合平滑的指令生成器使用。(149字)

m0_50546716的博客 288

POJ1151 Atlantis 解题报告(朴素算法+线段树解法)

POJ1151 Atlantis 0x40「数据结构进阶」例题 描述 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 unfo...

帅比王的博客 759

【GlobalMapper精品教程】094:GlobalMapper26简体中文版安装教程(附安装包下载)

【GlobalMapper精品教程】094:GlobalMapper26简体中文版安装教程(附安装包下载)- 基于深度学习的图像分析工具,用于自动识别土地覆盖分类、建筑物提取和车辆检测。新的太阳阴影分析工具,用于计算加载地形和 3D 要素的阴影。新的 GENERATE_SHADOWS 脚本命令允许自动执行这些计算。新增点云模型关键点自动识别。能够在自动点云分析工具中保存和加载自定义创建的要素模型。改进了像素到点中各种潜在重叠图像中 GCP 的自动识别。

智慧空间实验室 4895

【POJ 1151】 Atlantis(离散化+扫描线)

【POJ 1151】 Atlantis(离散化+扫描线) Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 20223   Accepted: 7634 Description There are several ancient Greek texts that

ACMer' 1302

python实现Markowitz模型 (附完整源码)

python实现Markowitz模型 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 405

【系统架构设计师-2023年真题】综合知识-答案及详解

要实现多任务间的协同工作,操作系统必须提供任务间的通信手段。嵌入式操作系统一般都会提供多任务间通信的方法,其中()是任务间最直接、最明显的通信方法,也是访问共享的数据结构,即不同的任务都可以访问同一地址空间。()作为一种更高级的通信方式,能够在同一处理器的各个任务间传递任意长度(理论上只受物理内存和机器字长限制)的信息。(1)A. 共享内存 B. Socket C. 消息传递 D. 信号量(2)A. 共享内存 B. Socket C. 消息传递 D. 信号量【答案】A、C关于星型拓扑结构,下列说法正确的是(

数据知道的博客 1万+

POJ 1151 Atlantis(扫描线求面积)

POJ 1151 Atlantis(扫描线求面积)

Insist111 347

黑猫带你学eMMC协议第29篇:eMMC设备锁详解(CMD42)

通过cmd42命令,可以给emmc设置密码,并且锁定emmc。这时候就不能对emmc的user分区进行读写数据访问了。设备锁在V4.3版本后的emmc里面,就只能保护user area分区,因此,被锁定的emmc,依旧可以正常访问BOOT\RPMB\GPP分区。emmc内部有128 bit PWD寄存器,用来存放密码,以及有8bit PWD_LEN寄存器,用来密码长度。这两个寄存器非易失性,掉电也不会丢失。

黑猫奥利奥的博客 3237

[POJ1151]Atlantis

[POJ1151]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 unfortunatel...

weixin_30608131的博客 90

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

POJ 1151 Atlantis(扫描线)

题目原链接:http://poj.org/problem?id=1151 题目中文翻译: POJ 1151 Atlantis Time Limit:1000MS Memory Limit:10000K Total Submissions:25769 Accepted:9477 Des...

anshuo0835的博客 184

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

POJ 1151 Atlantis(扫描线法、线段树、离散化)

POJ 1151 Atlantis(扫描线法、线段树、离散化) 蓝书线段树练习题 POJ 1151 Atlantis 题意:给定n个矩形的左下、右上的两个坐标点(x,y)(x,y)(x,y),求他们的面积并(总面积) 数据范围:n:100、x/y:1e5n:100、x/y:1e5n:100、x/y:1e5 思路:现在好困明天再写^^ LL n; struct SegmentTree{ int ...

手扶拖拉机如何改装四驱 181

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Atlantis POJ - 1151

https://cn.vjudge.net/problem/POJ-1151 #include <iostream> #include <cstring> #include <queue> #include <vector> #include <algorithm> #include <cstdio> #include ...

newhonor 270

【POJ1151】Atlantis

题目大意:给定 N 个矩形,求这些矩形的面积并。 题解:采用扫描线算法。 首先,按照矩形的横坐标排序,在纵坐标方向上维护一根扫描线被覆盖的长度,在这里采用线段树维护。统计答案时,从左到右扫描 2N 个 X 坐标,两个坐标之间的扫描线被覆盖的长度相等,因此直接长乘宽计入答案即可。 注意事项 由于坐标不是整数,因此采用离散化。 线段树动态开点即可。 跟以往线段树不同的地方在于,这里的线段树...

K1385170的博客 232

POJ·1151 Atlantis·线段树求矩形面积并

题目在这:http://poj.org/problem?id=1151 Atlantis Time Limit:1000MS Memory Limit:10000K Description There are several ancient Greek texts that contain descriptions of the fable...

weixin_34212189的博客 85

【POJ1151】Atlantis(线段树,扫描线)

【POJ1151】Atlantis(线段树,扫描线) 题面 Vjudge 题解 学一学扫描线 其实很简单啦 这道题目要求的就是若干矩形的面积和 把扫描线平行于某个轴扫过去(我选的平行\(y\)轴扫) 这样只需要求出每次和\(x\)轴覆盖的长度 就可以两两相乘,求出面积 最后累计和就行啦 #include<iostream> #include<cstdio> #include...

weixin_30672019的博客 90

【POJ1151】【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 unfortunately, these maps describe...

哇哈哈哈的博客 296

POJ-1151-Atlantis-求矩形面积并(线段树+扫描线)

http://poj.org/problem?id=1151 给你n个矩形,求面积并,点范围大,需要离散化 按照套路,先离散化,然后从下往上扫描,每次更新线段树区间,累加面积和。 #include #include #include #include #include #include #include #include #include #

缺氧 863

poj1151 Atlantis

线性扫描+线段树

YHaX的博客 489

Poj1151——Atlantis

Poj1151——Atlantis(Acwing247.亚特兰蒂斯) Description 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 isl...

qq_43371321的博客 317
上一篇: POJ 1149 PIGS
下一篇: POJ 1152 An Easy Problem
bobten2008
博客等级 码龄18年 153粉丝 157原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值