USACO 6.2.3 Shaping Regions

【USACO题库】3.1.4 Shaping Regions形成的区域 题目描述 N个不同的颜色的不透明的长方形(1 这些长方形被放置时,保证了它们的边于白纸的边缘平行。 所有的长方形都放置在白纸内,所以我们会看到不同形状的各种颜色。 坐标系统的原点(0,0)设在这张白纸的左下角,而坐标轴则平行于边缘。 INPUT FORMAT 每行输入的是放置长方形的方法。 第一行输入的是那个放在底的长方形(即白纸)。 第 1 行:A , B 和 N, 由 阅读详情

http://train.usaco.org/usacoprob2?a=NaWWtjt80VA&S=rect1

题目大意:在一个A*B的坐标区域内(A,B <= 10000)从底向上覆盖N(N <= 1000)个不同颜色(用数字表示1~2500)的矩形,求最后能够被看到的颜色和他们各自覆盖的面积(桌布底色为1,需要考虑)




很直观的就把他和之前一道矩形覆盖的题目联系了起来,用一个链表(数组)按次序存储然后对每一矩形先算面积,再上浮并分裂计算其被覆盖的面积,原本以为会RE,毕竟我用的是递归计算,在计算底层是得要递归N次,但没想到竟然通过了,真是难以置信,那这么看来这道题比之前那道反而简单,因为他连移动都不需要所以直接用数组就行

看了官方题解之后发现其实可以改成在插入每一个矩形时将下方矩形分裂,这样就不会有RE的风险,而且虽然在最坏情况下每一次分裂都会产生三个新矩形(4-1),但是新产生的四个小矩形再下次分裂时不可能再各自产生四个(最多就总共多产生四个)。不过这样一来就要用链表存储矩形,遍历链表的时候也要注意下一个要跳过刚刚新分裂出的矩形

/*
ID: frontie1
TASK: rect1
LANG: C++
*/
#include <iostream>
#include <cstdio>

using namespace std;

const int INFI = 0x3f3f3f3f;

struct rectangle
{
    int upp;
    int dow;
    int lef;
    int rig;
    int color;

    rectangle(int u = INFI, int d = 0, int l = 0, int r = INFI, int c = 0):upp(u), dow(d), lef(l), rig(r), color(c){};

    int overlap(const rectangle &obj)
    {
        int u = min(upp, obj.upp);
        int d = max(dow, obj.dow);
        int l = max(lef, obj.lef);
        int r = min(rig, obj.rig);

        if(u <= d || r <= l) return 0;
        else return ((u-d) * (r-l));
    }

    int area()
    {
        return ((upp-dow) * (rig-lef));
    }
};

int N;
rectangle arr[1010];
int area[2505];

int covered(rectangle obj, int num)
{
    if(num > N) return 0;
    rectangle tar = arr[num];

    int output = obj.overlap(tar);
    if(output == 0) output += covered(obj, num+1);
    else{
        rectangle tem;
        if(tar.lef > obj.lef) output += covered(rectangle(obj.upp, obj.dow, obj.lef, tar.lef, obj.color), num+1);
        if(tar.rig < obj.rig) output += covered(rectangle(obj.upp, obj.dow, tar.rig, obj.rig, obj.color), num+1);
        if(tar.upp < obj.upp) output += covered(rectangle(obj.upp, tar.upp, max(tar.lef, obj.lef), min(tar.rig, obj.rig), obj.color), num+1);
        if(tar.dow > obj.dow) output += covered(rectangle(tar.dow, obj.dow, max(tar.lef, obj.lef), min(tar.rig, obj.rig), obj.color), num+1);
    }
    return output;
}

int main()
{
    freopen("rect1.in", "r", stdin);
    freopen("rect1.out", "w", stdout);

    cin >> arr[0].rig >> arr[0].upp;
    arr[0].color = 1;

    cin >> N;

    for(int i = 1; i <= N; ++i){
        cin >> arr[i].lef >> arr[i].dow >> arr[i].rig >> arr[i].upp >> arr[i].color;
    }

    for(int i = 0; i <= N; ++i){
        area[arr[i].color] += arr[i].area();
        area[arr[i].color] -= covered(arr[i], i+1);
    }

    for(int i = 1; i <= 2500; ++i){
        if(area[i] != 0) cout << i << ' ' << area[i] << endl;;
    }

    return 0;
}

KEIL 5.38如何手动安装ARM Compiler V5?完整配置流程分享 本文详细介绍了在KEIL 5.38环境下手动安装和配置ARM Compiler V5(AC5)的完整流程,解决历史遗留项目的兼容性问题。从获取安装包、环境变量设置到KEIL集成配置,逐步指导开发者完成AC5的部署,并提供了常见错误排查和性能优化建议,帮助开发者高效维护基于C编译器的老项目。 阅读详情

相关推荐

Altium Designer实战:手把手教你设计智能车竞赛疯狂电路组赛道(附封装库)

本文详细介绍了使用Altium Designer软件进行智能车竞赛“疯狂电路”组赛道设计的全流程实战指南。从理解比赛规则、搭建设计环境、创建专用元器件封装库,到电路布局、路径规划及设计输出验证,手把手教你高效完成符合计分标准的赛道图纸设计,并附上实用的封装库管理方法。

alice7model的博客 1321

USACO Shaping Regions

1、呼。。。终于过了这道,考察离散化+线段树的区间修改。因为是零基础,所以专门跑到POJ找了一道相似的题目做(POJ 2528)。。。终于写出来了~ 2、所谓离散化,就是将无限空间映射到有限区域,通俗一点讲,就是只记录边界线。本题对x和y坐标均离散化,然后枚举x点并更新(合法的)x点对应的线段树(也就是说x要在该操作所包围的范围内),接着统计每种颜色的数量。要注意setv【0】初始值应设为1(表

483

halcon 检测直线

图中后三个对象既是检测出的图像;

qq_59062726的博客 666

USACO 3.1 Shaping Regions (rect1)

/* 思路大概是这样的,首先读入所有的矩形。我们可以发现最后覆盖的矩形不会被其他矩形覆盖,所以可以考虑从后向前覆盖。 对于每个矩形,我们把它和有可能覆盖在它上面的矩形(就是出现在当前矩形后面的矩形)比较, 如果两个矩形有重叠部分就把重叠部分去掉,把当前矩形分成几个小矩形递归进行分割。 直到当前矩形与后面的矩形全部没有公共部分,累加矩形的面积。 Refer to byvoid; */ /* ID:

Hello World! 1394

智能工厂四大系统协同实战:ERP/PLM/MES/WMS集成架构与数据流解析

本文深入解析了智能工厂中ERP、PLM、MES、WMS四大核心系统的协同集成架构与数据流。通过实战案例,阐述了如何打通系统孤岛,实现从产品设计、资源计划、生产执行到仓储物流的数据无缝流转,从而构建高效、敏捷的智能工厂运营体系。

ujm567890的博客 674

手把手教你学Simulink--进阶电机控制场景实例:基于Simulink的直流电机双闭环调速系统抗负载扰动仿真

摘要:本文基于Simulink平台构建直流电机双闭环调速系统,重点研究其在工业传送带场景下的抗负载扰动性能。系统采用转速外环(稳速)和电流内环(限流)的嵌套结构,通过工程法整定PI参数,实现了转速跌落<10%、恢复时间<0.5s的优异抗扰性能。仿真结果表明,相比单闭环系统,双闭环控制使转速跌落率降低47%,恢复时间缩短75%。文中详细介绍了数学模型建立、Simulink模块实现及参数优化方法,并提供了完整代码和模型文件,为电机控制系统设计提供实用参考。

MHD0815的博客 179

USACO Shaping Regions(二维线段树做法 原USACO3.1.4?还是3.4.1?)

题目大意:给定一个矩形,每次选出一个矩形覆盖上颜色K,最后问你每个颜色有多少个。(后上色的,会覆盖掉之前上色的) 而为线段树会炸内存,而且很慢。所以只能当练手了。 首先离散化所有坐标,构建二维线段树。 因为树套树不能动态标记,只能永久标记,所以我们读入后,把数据倒着处理。先进树的,可以让后进树的进不去。 我们假设树套树一开始做的是X树,后来在X树的节点上,有

ACMer不要报考高校代码为13627的移通学院! 477

ROCm rocr-libhsakmt分析系列9-3: queue的内核创建流程

KFD队列是用户空间与GPU通信的核心机制,通过多种队列类型(计算、DMA、调试等)实现命令流管理。核心数据结构包括描述队列属性的queue_properties、内核调度对象queue、进程级管理器process_queue_manager,以及跨进程设备的qcm_process_device等。这些结构通过ring buffer、doorbell机制和MQD硬件描述符协同工作,支持队列全生命周期管理、资源调度、异常处理和上下文保存/恢复功能。

图形/计算GPU的驱动与虚拟化技术分享园地 2125

USACO 3.1 Shaping Regions

Shaping Regions N opaque rectangles (1 <= N <= 1000) of various colors are placed on a white sheet of paper whose size is A wide by B long. The rectangles are put with their sides parallel to the s

Craig04的专栏 856

手把手实现STM32+ESP8266+原子云服务器+手机APP应用——第一节-ATK-ESP8266 WIFI模块通过USB-TTL实现连接原子云服务器与手机APP互相通信

本节实现ATK-ESP8266 WIFI模块通过USB-TTL实现连接原子云服务器与手机APP通信。具体来说,本节使用串口CH340(USB-TTL)连接正点原子ATK-ESP8266 WIFI模块,通过AT命令实现连接原子云服务器与手机APP互相通信,实现硬件设备(WIFI模块)与云服务器和手机APP的互相通信。后面章节不用串口CH340(USB-TTL),通过编写单片机程序实现数据远程互相通信,并介绍手机APP的程序设计。单片机任意款即可,STM32F1系列,F4系列,H系列等都可以。本系列为(手把手实

嵌入式阿齐Archie 8419

HINT: High-quality INpainting Transformer with Mask-Aware Encoding and Enhanced Attention 训练自己的数据集

HINT(高质量图像修复变换器)通过创新的掩码感知像素洗牌下采样模块(MPD)和空间激活通道注意力层(SCAL),显著提高了图像修复的质量,尤其在大面积缺失区域的情况下。实验表明,HINT在CelebA、CelebA-HQ、Places2和敦煌数据集上超越了现有的最先进模型,提升了图像的细节和结构一致性。

LJ1147517021的博客 312

usaco6.2.3 Shaping Regions

一 原题 Shaping Regions N opaque rectangles (1 <= N <= 1000) of various colors are placed on a white sheet of paper whose size is A wide by B long. The rectangles are put with their sides paralle

max_kibble的博客 314

边缘计算与产业生态系统

目录 文章目录目录边缘计算产业参与者边缘计算产业生态系统 边缘计算产业参与者 边缘计算领域参与者众多,主流公司以打造生态优势为目标,基于自身服务层级向产业链上下两端进行拓展,目前市场主要参与者有: 系统集成商:在产业头部,具有广泛的能力,可以集成不同生态系统公司的产品,具有一定的全球性属性,在边缘计算领域大多由云服务商、电信运营商担任。 云服务商:具有领先的云技术优势与应用生态体系,同时拥有全球性资源布局与市场资源生态,并渴望成为边缘计算主导者。 电信运营商:具有边缘基础设施优势,以及不可替代的

烟云的计算 2102

[USACO 6.2.3] Shaping Regions

题目大意   N个不同颜色矩形放在同一方框内,每个矩形都至少有一部分被看见,求每个矩形被看见的面积. 题解   这道题和usaco以前做过的某道题我感觉很类似.   使用漂浮法,或者说是矩形分割法.   想象一下,每个矩形有一个层次标记.低层次的会被高层次的覆盖.我们想象一下低层次的矩形向上漂浮,然后撞到了一个矩形.然后这个漂浮ing的矩形就会分割成若干个矩形.然后这若干个矩形继续向上漂...

weixin_30399871的博客 90

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

精雕软件(JDpaint) 5.5 绿色版

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

USACO6.2.3 Shaping Regions(rect1)

简单的矩形切割 /* ID:xsy97051 LANG:C++ TASK:rect1 */ #include #include #include #include using namespace std; int a,b,n,color[2505],cnt[2505],llx[2505],lly[2505],urx[2505],ury[2505]; void qiege(int

xsy_victory的专栏 353

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

[矩形切割][离散化][usaco3.1.4]Shaping Regions

Shaping Regions形成的区域 译 by tim green 目录  [隐藏]  1 描述2 格式3 SAMPLE INPUT4 SAMPLE OUTPUT5 INPUT EXPLANATION6 HINTS(谨慎地使用它们!) [编辑]描述 N个不同的颜色的不透明的长方形(1 [编辑]格式 PROGR

wu_yihao的专栏 1089

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

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

usaco 3.1 Shaping Regions

//usaco 3.1 Shaping Regions /* PROG:rect1 LANG:C++ 开始先试用了暴力灌水法。开了一个10000*10000的数组来标记各个方块的颜色 暴力染色。本地测试通过了 提交上去缺爆空间了,USACO给的空间太少了 然后看到了题目给出的Hint1 (use them carefully!) :An array of all 'points' is too b

LiWeiJie的专栏 706

USACO-Shaping Regions

来源:http://www.nocow.cn/index.php/Translate:USACO/rect1 很明显灌水法是行不通的。 什么是灌水法?就是把每一个矩形都标记一遍,最后扫描整个大矩阵,算法的时间复杂度是O(N^2),看数据规模就知道肯定死翘翘了。 这题我选用了漂浮法,也称碰撞法。 漂浮法在nocow上是这样描述的: 漂浮法 以逆序来进行放置,即n to 1。逆序...

anyuan5299的博客 209

Usaco Training Section 6.2Shaping Regions

Shaping Regions 形成的区域 N 个不同的颜色的不透明的长方形(1 &lt;= N &lt;= 1000)被放置在一张宽为A 长为B 的白纸上.这 些长方形被放置时,保证了它们的边于白纸的边缘平行.所有的长方形都放置在白纸内,所以我们会看到不同形状的各种颜色.坐标系统的原点(0,0)设在这张白纸的左下角,而坐标轴则平行于边缘. PROGRAM NAME: rect1 INPUT FO...

Monster的博客 413

USACO Shaping Regions 解题报告

时间过得好快,距离上一次写解题报告也仅仅过去了两个多月了。贵在加持。Hope the waiting will have a sweet end. God bless me. 此题由于后面讲到的难点,卡了很久,代码越写越恶心后,看到http://belbesy.wordpress.com/2012/08/13/usaco-3-1-3-shaping-regions/这里茅塞顿开。可以直接移步上述

thestoryofsnow的专栏 1592

【矩形切割】Shaping Regions形成的区域

USACO 3.1.4  USACO_3.1.4Shaping Regions形成的区域 Time Limit:1000MS  Memory Limit:65536K Total Submit:7 Accepted:2 Description N个不同的颜色的不透明的长方形(1 Input 按顺序输入放置长方形的方法。第一行输入的是那个放在底的长方形(即白纸)。  第 1

wu_yihao的专栏 901

USACO 3.1.4 Shaping Regions

题就不贴了,想看的就去USACO找吧= = 大致就是说给你一堆矩形,每个矩形颜色都不一样,叠啊叠啊叠(= =||),然后求最终各颜色的面积... 原来做题的时候好像见过这个,当时用了最朴素的染色法- -,可惜没过几个点,一是数据范围过大,二是超时... 前两天又遇到这题了,想得脑袋都大了... 没有办法,只得求助于NOCOW了... 在其中相中了矩形切割的解法(线段树没学过),于...

aolongsi1598的博客 166

USACO Section 3.1 Shaping Regions

Shaping Regions N opaque rectangles (1 <= N <= 1000) of various colors are placed on a white sheet of paper whose size is A wide by B long. The rectangles are put with their sides para...

angtongyou1893的博客 182

usaco Shaping Regions

这就是usaco 前面的windows area的变形。 /* ID:jinbo wu TASK:rect1 LANG:C++ */ #include #include #include using namespace std; int max(int a,int b) { return a>b?a:b; } const int maxn=3000; int x0[maxn],x[maxn]

silence401的博客 402

USACO: Shaping Regions

Shaping Regions<br />N opaque rectangles (1 <= N <= 1000) of various colors are placed on a white sheet of paper whose size is A wide by B long. The rectangles are put with their sides parallel to the sheet's borders. All rectangles fall within the borders

304
上一篇: USACO 6.2.2 Packing Rectangles 暴力模拟
下一篇: USACO 6.3.1 Fence Rails 01多背包问题(BS+IDDFS)
Frontier_Setter
博客等级 码龄10年 2粉丝 123原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值