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>一书中的解谜之旅了! 狼羊菜过河: 谜题:一个人在河边,带着一匹狼.一只羊.一颗卷心菜.他需要用船将这三样东西运至对岸,然而,这艘船空 ...
随机推荐
- Qt 打开指定网站/系统文件夹
本文转载自:http://blog.csdn.net/robertkun/article/details/7802977和http://hi.baidu.com/xyhouse/item/ccf ...
- leetcode.矩阵.73矩阵置零-Java
1. 具体题目 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0.请使用原地算法. 示例 1: 输入: 输出:[ [ [1,1,1], [1,0,1], [ ...
- [已解决]报错: Python Scrapy - service_identity(opentype) not working and cannot install
解决:更新安装service_identity pip3 install service_identity --force --upgrade
- redis 入门之列表
lpush 将一个或多个值 value 插入到列表 key 的表头如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表头: 比如说,对空列表 mylist 执行命令 LPU ...
- JS提示信息来检测相应id的标签
2015-07~2015-08 (其中$为document.getElementById()) 使用span提示信息来检测相应id的标签,没有返回值 infoTips("LRYH" ...
- 暴力穷举zip、rar压缩文件的密码
生成密码的方式类似与时钟,末尾遍历完了第k位所有的字符,就让第k位的前一位到下一位字符,第k位回到第0个字符. 对python还不太熟悉,效率比较低,但是能破解简单的密码. import zipfil ...
- bat批处理----set
转载自 https://www.cnblogs.com/Braveliu/p/5081084.html [1]set命令简介 set,设置. [2]set命令使用 1. 打印系统环境变量.set ...
- JavaScript常用技巧之时间操作
1.获取当前时间戳 +new Date Date.parse(new Date())
- 【JS学习】慕课网4-10 编程练习
在一个大学的编程选修课班里,我们得到了一组参加该班级的学生数据,分别是姓名.性别.年龄和年级,接下来呢,我们要利用JavaScript的知识挑出其中所有是大一的女生的的名字哦. 学生信息如下: ('小 ...
- Vuex的管理员Module(实战篇)
Module按照官方来的话,对于新手可能有点难以接受,所以想了下,决定干脆多花点时间,用一个简单的例子来讲解,顺便也复习一下之前的知识点. 首先还是得先了解下 Module 的背景.我们知道,Vuex ...