USACO2012 overplanting /// 矩阵切割 递归 oj21547
题目大意:
在农场的任何一个“轴向对齐”的长方形区域(即垂直和水平方向)种植草坪。
现种植了N(1≤ N ≤10)个不同的矩形区域,其中一些甚至可能重叠。
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 (x1, y1) and lower-right corner (x2, y2). All coordinates are in the range -10,000...10,000.
For each case, output one line: The total area covered by grass.
2
0 5 4 1
2 4 6 2
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的更多相关文章
- hdu 1588(矩阵好题+递归求解等比数列)
Gauss Fibonacci Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- 【t004】切割矩阵
Time Limit: 1 second Memory Limit: 50 MB [问题描述] 给你一个矩阵,其边长均为整数.你想把矩阵切割成总数最少的正方形,其边长也为整数.切割工作由一台切割机器完 ...
- 递归实现n(经典的8皇后问题)皇后的问题
问题描述:八皇后问题是一个以国际象棋为背景的问题:如何能够在8×8的国际象棋棋盘上放置八个皇后, 使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行.纵行或斜线上 ...
- [WinForm]平均切割图片AvgCutImage
昨天晚上下班前有朋友问我有的人的QQ空间相册的那种多个图片拼接成一张完整的图片的是怎么做到的比如像这样效果: 嘛,反正我是1000%不会使用这样封面来做网络相册的封面,因为用户体验实在是太差了.完全不 ...
- 递归分治算法之二维数组二分查找(Java版本)
[java] /** * 递归分治算法学习之二维二分查找 * @author Sking 问题描述: 存在一个二维数组T[m][n],每一行元素从左到右递增, 每一列元素从上到下递增,现在需要查找元素 ...
- 二模 (5) day2
第一题: 有 N 个人顺时针围在一圆桌上开会,他们对身高很敏感. 因此决定想使得任意相邻的两人的身高差距最大值最小. 如果答案不唯一,输出字典序最小的排列,指的是身高的排列.N<=50 解题过程 ...
- [源码解析] 深度学习流水线并行Gpipe(1)---流水线基本实现
[源码解析] 深度学习流水线并行Gpipe(1)---流水线基本实现 目录 [源码解析] 深度学习流水线并行Gpipe(1)---流水线基本实现 0x00 摘要 0x01 概述 1.1 什么是GPip ...
- OpenCV 2 Computer Vision Application Programming Cookbook读书笔记
### `highgui`的常用函数: `cv::namedWindow`:一个命名窗口 `cv::imshow`:在指定窗口显示图像 `cv::waitKey`:等待按键 ### 像素级 * 在灰度 ...
- 《algorithm puzzles》——谜题
这篇文章开始正式<algorithm puzzles>一书中的解谜之旅了! 狼羊菜过河: 谜题:一个人在河边,带着一匹狼.一只羊.一颗卷心菜.他需要用船将这三样东西运至对岸,然而,这艘船空 ...
随机推荐
- jmeter 5 参数化
文件: 文件编码 注意: 如果文件另存为utf-8,文件第一行头会带bom头(不可见字符),jmeter读取参数后,会把头读取到请求报文中,提示不存在该用户 什么是bom头? 在utf-8编码文件中B ...
- 32-python基础-python3-列表永久排序方法-sort()方法
1-数值的列表或字符串的列表,能用 sort()方法排序. 实例1: 实例2: 2-可以指定 reverse 关键字参数为 True,让 sort()按逆序排序. 实例1: 3-关于 sort()方法 ...
- Socket传输中文乱码
最近在学习Socket的时候,遇到了中文乱码问题,在网上找到了一个说的很透彻的,这里分享一下:http://helloworlda.iteye.com/blog/1270703 现在问题是这样的: 打 ...
- Hooks初探
一.创建自己的HOOkS,并进行封装 二.创建自己的HOOkS,并进行封装
- vue 中引入cryptoJS
在搞前端开发的时候,页面上有很多的地方是需要用户输入信息的,但是有些信息又很敏感,比如客户的姓名.电话号码.身份证号码.银行卡号及密码等等这些,如果没有进行加密处理,很容易被别人截取到,项目中应用到c ...
- Draggable(拖动框)
一.class加载方式 <div id="box" class="easyui-draggable" style="width:400px;he ...
- iOS开发系列-Block
概述 在iOS 4.0之后,block横空出世,它本身封装了一段代码并将这段代码当做变量,通过block()的方式进行回调.这不免让我们想到在C函数中,我们可以定义一个指向函数的指针并且调用. #im ...
- teb教程2
http://wiki.ros.org/teb_local_planner/Tutorials/Inspect%20optimization%20feedback 检查优化反馈 简介:怎样检查优化的轨 ...
- AtCoder ABC 131F Must Be Rectangular!
题目链接:https://atcoder.jp/contests/abc131/tasks/abc131_f 转自博客:https://blog.csdn.net/qq_37656398/articl ...
- 将中国标准时间)转化为yyyy-MM-dd
有两种方法: 1. ]); ) + '-' + d.getDate() + ' ' + d.getHours() + ':' + d.getMinutes() + ':' + d.getSeconds ...