51NOD 1559:车和矩形——题解】的更多相关文章

http://www.51nod.com/Challenge/Problem.html#problemId=1559 倘若矩形是受保护的,那么矩形内每一行至少有一个车或者每一列至少有一个车 判断矩形内每一列都有一个车: 线段树中维护x坐标这一列车的最大y坐标 那么扫描线扫过矩形的上边界时 如果矩形左右边界内,车的最大y坐标中最小的那个大于等于矩形的下边界 那么这个矩形的每一列都有一个车 将车按y坐标从小到大排序,每次扫到一条矩形的上边界, 将y坐标<=这一上边界的车都加入线段树,即用车的y坐标更…
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1559 波雷卡普有一个n×m,大小的棋盘,上面有k个车.他又放了q个矩形在上面.每一个矩形要受到保护.矩形受到保护的意思是对于该矩形内部所有的格子能够被这个矩形内的某个车攻击到或者被占据,和矩形外面的车无关,即矩形外面的车不能攻击到矩形里面.车的位置是固定的. 样例解释: 对于最后一个矩形,用红色框框表示的,因为(1,2)不能被某个车攻击到,所以是NO. 题其实不难,但是…
题解 离线读入,我们发现一个矩形能被保护,矩形内部所有列上必定有一辆车,或者所有行上必定有一辆车 分两次进行处理 第一次按照横坐标把车加进去,然后查询最大横坐标在这个位置的矩形,纵坐标区间里的车出现位置的最小值有没有超过最小横坐标 第二次按照纵坐标把车加进去,然后查询最大纵坐标所在位置的矩形,横坐标区间里的车出现位置的最小值有没有超过最小纵坐标 用线段树维护区间即可 代码 #include <iostream> #include <algorithm> #include <c…
51nod 1564 由于数据是随机的,可以证明,对于每一个数,向左或右找比它小的数,长度是logn级别的 考虑枚举最大值 注意,对于每一个最大值,如果直接用2个循环枚举左右端点的话,理论是lognlogn级别的,但是还是很容易被卡的,换成贪心,用2个指针指着左右端点,每一次移动我们往数大的那个方向移动 代码: //File Name: nod1564.cpp //Author: long //Mail: 736726758@qq.com //Created Time: 2016年10月10日…
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1227 懒得打公式了,看这位的吧:https://blog.csdn.net/fromatp/article/details/74999989 又一次将我的智商下限刷低的一道题,论我根本没注意到[gcd(i,j)==1]*j=phi(i)*i/2这个悲催的事实. 果然我数学活该学不好. #include<map> #include<cmath> #inclu…
P1191 矩形 题目描述 给出一个 \(n \times n\)的矩阵,矩阵中,有些格子被染成白色,有些格子被染成黑色,现要求矩阵中白色矩形的数量 输入格式 第一行,一个整数\(n\),表示矩形的大小. 接下来\(n\)行,每行\(n\)个字符,这些字符为"\(W\)"或"\(B\)".其中"\(W\)"表示白格,"\(B\)"表示黑格. 输出格式 一个正整数,为白色矩形数量 输入输出样例 输入 #1 4 WWBW BBWB…
单调栈和队列讲解:传送门 HDU -1506题意: 就是给你一些矩形的高度,让你统计由这些矩形构成的那个矩形面积最大 如上图所示,如果题目给出的全部是递增的,那么就可以用贪心来解决 从左向右依次让每一个矩形的高度当作最后的高度,来从中选取最大值就可以了 但是如果它不是递增的,中间会出现低谷,那么要还想运用贪心策略就要把之前高度大于它的全部扔掉,但是再扔掉他们之前还要判断一下以他们为最后答案的高度可不可行,这样我们就是在构造一个递增序列,可以用栈来维护它 代码: 1 #include<stdio.…
题目链接:51nod 1244 莫比乌斯函数之和 题解参考syh学长的博客:http://www.cnblogs.com/AOQNRMGYXLMV/p/4932537.html %%% 关于这一类求积性函数前缀和的方法,学习参考博客:http://blog.csdn.net/skywalkert/article/details/50500009  要好好看大神的博客哦orz 用筛法预处理前N^(2/3)项,后面的记忆化搜索解决. 不太会用哈希,就用map记忆化一下: #include<cstdi…
[BZOJ2338][HNOI2011]数矩形 题解:比较直观的做法就是枚举对角线,两个对角线能构成矩形当且仅当它们的长度和中点相同,然后用到结论:n个点构成的矩形不超过n^2.5个(不会证),所以两两枚举对角线即可. #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; typedef long long ll;…
上接:DP&图论 DAY 1 上午 这两个题本质是一个亚子,所以放一起啦 DPDPDPDPDPDPDPDP P1115 最大子段和 题解 因为题目要求的是一段连续的区间,所以前缀和搞暴力??? 我们设置数组 f[ i ] 表示以 a[ i ] 结尾的最大连续子段和 那么转移??? 1.接着上一段,继续构成一段连续的子段 continue the old life 2.自成一段  和过去 say goodbye 转移方程:  ans记录最大值就好啦 代码 #include<bits/stdc+…