题目大意:

在农场的任何一个“轴向对齐”的长方形区域(即垂直和水平方向)种植草坪。

现种植了N(1≤ N ≤10)个不同的矩形区域,其中一些甚至可能重叠。

Input

Multiple test cases. For each case:

* Line 1: The integer N.

* Lines 2..1+N: Each line contains four space-separated integers x1  y1  x2  y2 specifying a rectangular region with upper-left corner (x1y1) and lower-right corner (x2y2).  All coordinates are in the range -10,000...10,000.

Output

For each case, output one line: The total area covered by grass.

Sample Input

2
0 5 4 1
2 4 6 2

Sample Output

20

用矩形切割的方法 看代码就懂

#include <bits/stdc++.h>
using namespace std;
int x1[],x2[],m1[],m2[],sum;
void cur(int len1,int len2,int hig1,int hig2,int i)
{
if(len1>=len2||hig1<=hig2) return;
while(i>=&&(len1>=x2[i]||hig1<=m2[i]||len2<=x1[i]||hig2>=m1[i]))
i--;
if(i<)
{
sum+=(len2-len1)*(hig1-hig2);
return;
}
if(len1<x1[i])
{
cur(len1,x1[i],hig1,hig2,i-);
len1=x1[i];
}
if(len2>x2[i])
{
cur(x2[i],len2,hig1,hig2,i-);
len2=x2[i];
}
if(hig1>m1[i])
{
cur(len1,len2,hig1,m1[i],i-);
hig1=m1[i];
}
if(hig2<m2[i])
{
cur(len1,len2,m2[i],hig2,i-);
hig2=m2[i];
}
return;
}
int main()
{
int n;
while(~scanf("%d",&n))
{
sum=;
for(int i=;i<n;i++)
scanf("%d%d%d%d",&x1[i],&m1[i],&x2[i],&m2[i]);
for(int i=;i<n;i++)
cur(x1[i],x2[i],m1[i],m2[i],i-);
printf("%d\n",sum);
} return ;
}

USACO2012 overplanting /// 矩阵切割 递归 oj21547的更多相关文章

  1. hdu 1588(矩阵好题+递归求解等比数列)

    Gauss Fibonacci Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  2. 【t004】切割矩阵

    Time Limit: 1 second Memory Limit: 50 MB [问题描述] 给你一个矩阵,其边长均为整数.你想把矩阵切割成总数最少的正方形,其边长也为整数.切割工作由一台切割机器完 ...

  3. 递归实现n(经典的8皇后问题)皇后的问题

    问题描述:八皇后问题是一个以国际象棋为背景的问题:如何能够在8×8的国际象棋棋盘上放置八个皇后, 使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行.纵行或斜线上 ...

  4. [WinForm]平均切割图片AvgCutImage

    昨天晚上下班前有朋友问我有的人的QQ空间相册的那种多个图片拼接成一张完整的图片的是怎么做到的比如像这样效果: 嘛,反正我是1000%不会使用这样封面来做网络相册的封面,因为用户体验实在是太差了.完全不 ...

  5. 递归分治算法之二维数组二分查找(Java版本)

    [java] /** * 递归分治算法学习之二维二分查找 * @author Sking 问题描述: 存在一个二维数组T[m][n],每一行元素从左到右递增, 每一列元素从上到下递增,现在需要查找元素 ...

  6. 二模 (5) day2

    第一题: 有 N 个人顺时针围在一圆桌上开会,他们对身高很敏感. 因此决定想使得任意相邻的两人的身高差距最大值最小. 如果答案不唯一,输出字典序最小的排列,指的是身高的排列.N<=50 解题过程 ...

  7. [源码解析] 深度学习流水线并行Gpipe(1)---流水线基本实现

    [源码解析] 深度学习流水线并行Gpipe(1)---流水线基本实现 目录 [源码解析] 深度学习流水线并行Gpipe(1)---流水线基本实现 0x00 摘要 0x01 概述 1.1 什么是GPip ...

  8. OpenCV 2 Computer Vision Application Programming Cookbook读书笔记

    ### `highgui`的常用函数: `cv::namedWindow`:一个命名窗口 `cv::imshow`:在指定窗口显示图像 `cv::waitKey`:等待按键 ### 像素级 * 在灰度 ...

  9. 《algorithm puzzles》——谜题

    这篇文章开始正式<algorithm puzzles>一书中的解谜之旅了! 狼羊菜过河: 谜题:一个人在河边,带着一匹狼.一只羊.一颗卷心菜.他需要用船将这三样东西运至对岸,然而,这艘船空 ...

随机推荐

  1. Rust <3>:控制流

    if.loop.for.while: fn main() { if 3 > 4 { println!{">"}; } else { println!{"< ...

  2. 6.Jmeter 参数关联设置

    Jmeter的参数关联其实就是参数变量的在不同的采样器(sampler)的存储与传递. 如下我们有一个请求例子. 1.  发起下订单(下订单成功后会返回一个订单Id) 2.  针对该订单进行支付(需要 ...

  3. Django框架(十七)—— 中间件、CSRF跨站请求伪造

    目录 中间件 一.什么是中间件 二.中间件的作用 三.中间件执行顺序 四.自定义中间件 1.导包 2.定义类,继承MiddlewareMixin 3.在视图函数中定义一个函数 4.在settings的 ...

  4. git清理工作区

    git clean -f 这将删除所有未被追踪的文件 git rev-list

  5. c# SqlBulkCopy实现批量从数据集中把数据导入到数据库中

    今天遇到了一个导入类第一次见 SqlBulkCopy 可以实现从一个数据集导入到数据库中的表中 本来想从数据集中一条条遍历insert到库中 有了这个后发现: 只在把表与数据集的列做一下对应关系,再走 ...

  6. Python安装和使用教程(windows)

    点击进入幕布视图浏览 https://mubu.com/doc/a8VGCUfqqw 一.Python下载 1.进入Python官网:https://www.python.org/ 2.选择windo ...

  7. 为IIS服务器配置SSL,并设置为默认使用https协议访问网站

    要使网站支持https协议,需要SSL证书,我的服务器和域名都是在阿里云购买的,所以这里我演示阿里云获取SSL证书的方法 我先说下我的服务器环境:windows server 2012 + IIS8. ...

  8. 使用WdatePicker时间插件简单的控制页面上两个时间选择的前后范围

    很多时候我们在一个交互的页面上需要显示两个时间让客户填写,比如开始时间&结束时间,顾名思义开始肯定不能大于结束,故使用WdatePicker插件选择时间的话可以很好的做好时间段的控制.看下面一 ...

  9. CentOS 7 安装详细步骤

    VMware安装centos 7 前期准备: 1. VMware虚拟机软件(使用的是15x) 2. CentOS-7-x86_64-DVD-1810.iso 一.安装VMware虚拟机软件 略 二.新 ...

  10. KiCAD更新封装

    KiCAD更新封装 有时候我们画完了PCB,但发现某个封装类型的器件需要修改,可能是修改尺寸,也可能是修封装参考或者值,具体操作如下: 1.首先更新原理图封装 2.从原理图更新到PCB(如果修改了封装 ...