51nod 1559 车和矩形】的更多相关文章

http://www.51nod.com/Challenge/Problem.html#problemId=1559 倘若矩形是受保护的,那么矩形内每一行至少有一个车或者每一列至少有一个车 判断矩形内每一列都有一个车: 线段树中维护x坐标这一列车的最大y坐标 那么扫描线扫过矩形的上边界时 如果矩形左右边界内,车的最大y坐标中最小的那个大于等于矩形的下边界 那么这个矩形的每一列都有一个车 将车按y坐标从小到大排序,每次扫到一条矩形的上边界, 将y坐标<=这一上边界的车都加入线段树,即用车的y坐标更…
题解 离线读入,我们发现一个矩形能被保护,矩形内部所有列上必定有一辆车,或者所有行上必定有一辆车 分两次进行处理 第一次按照横坐标把车加进去,然后查询最大横坐标在这个位置的矩形,纵坐标区间里的车出现位置的最小值有没有超过最小横坐标 第二次按照纵坐标把车加进去,然后查询最大纵坐标所在位置的矩形,横坐标区间里的车出现位置的最小值有没有超过最小纵坐标 用线段树维护区间即可 代码 #include <iostream> #include <algorithm> #include <c…
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1559 波雷卡普有一个n×m,大小的棋盘,上面有k个车.他又放了q个矩形在上面.每一个矩形要受到保护.矩形受到保护的意思是对于该矩形内部所有的格子能够被这个矩形内的某个车攻击到或者被占据,和矩形外面的车无关,即矩形外面的车不能攻击到矩形里面.车的位置是固定的. 样例解释: 对于最后一个矩形,用红色框框表示的,因为(1,2)不能被某个车攻击到,所以是NO. 题其实不难,但是…
I - 秋实大哥下棋 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Status 胜负胸中料已明,又从堂上出奇兵.秋实大哥是一个下棋好手,独孤求败的他觉得下棋已经无法满足他了,他开始研究一种新的玩法. 在一个n×m的棋盘上,放置了k个车,并且他在棋盘上标出了q个矩形,表示矩形内部是战略要地. 秋实大哥要求一个矩形内的每一个格子,都至少能被一辆在矩形内的车攻击到,…
背景: 一日在网上闲逛的之时,突然看到一个利用JQ插件实现canvas实现的电影黑客帝国的小Demo.觉得创意不错,就下载下来研究一下. 网上浏览jQuery的写法 $(document).ready(function() { var s = window.screen; var width = q.width = s.width; var height = q.height; var yPositions = Array(300).join(0).split(''); var ctx = q.…
链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1102 思路: 首先介绍下单调栈的功能:利用单调栈,可以找到从左/右遍历第一个比它小/大的元素的位置.时间复杂度为O(n). 这道题要找最大的矩形的面积,我们可以假设i为矩形最低的高,那么对每一个i找到向左走第一个比他小的l[i],和向右走第一个比他小的r[i]. 我们可以知道当前矩阵最大为:a[i] * (l[i]-1-(r[i]-1)+1);对所有i的值取最大…
51nod 1206 Picture 矩形周长求并 | 线段树 扫描线 #include <cstdio> #include <cmath> #include <cstring> #include <algorithm> #include <iostream> using namespace std; typedef long long ll; #define INF 0x3f3f3f3f #define space putchar(' ') #…
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1102 题意: 思路: 做法就是求出每个长方形向左向右所能延伸的最大距离. 我这里用单调栈来做,维护一个单调递增的栈(自底向上递增),如果当前值大于栈顶,那么直接进栈,如果小于的话,那就说明前面比它大的那些数最多只能延伸到它这里.自己手动模拟一下就可以了. #include<iostream> #include<algorithm> #include<…
题目地址在这儿 求取:以某矩形g[i]为最小值的区间的左右端点,得到一个临时解.所有临时解中的最大值即为解. 求取区间的方法可以用单调栈,也可以用下面这种十分简洁的类似于递归的方法.下面这种解法求出来的区间是开区间,也正是因为开区间,所以跳转很方便. L[i]是以第i根柱子为最小值的左开区间点.若g[i] <= g[L[i]],则L[i]=L[L[i]]: 打个比方,柱子高度为1,3,9,7,5.g[4]=7,一开始L[4]初始化为3,那么若g[4]<=g[L[4]],即7=g[4]<=…
在二维平面上,给定两个矩形,满足矩形的每条边分别和坐标轴平行,求这个两个矩形的并的面积.即它们重叠在一起的总的面积. 收起   输入 8个数,分别表示第一个矩形左下角坐标为(A,B),右上角坐标为(C,D):第二个矩形左下角坐标为(E,F),右上角坐标为(G,H). 保证A<C,B<D,E<G,F<H. 保证所有数的绝对值不超过2*10^9,矩形并的面积≤2*10^9. 输出 输出一个数表示矩阵并的面积. 输入样例 -3 0 3 4 0 -1 9 2 输出样例 45 计算重叠部分的…