luogu P1578 奶牛浴场
很好的一道题
王知昆爷爷的论文(讲的特别清楚) https://wenku.baidu.com/view/bc8311f69e314332396893f7.html
先贴上AC代码
1 #include<stdio.h> 2 #include<string.h> 3 #include<algorithm> 4 using namespace std; 5 template<class T>void read(T &x){ 6 int f=0;x=0;char ch=getchar(); 7 while(ch<'0'||ch>'9') {f|=(ch=='-');ch=getchar();} 8 while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();} 9 x=f?-x:x; 10 } 11 12 const int N=5007; 13 int ans,yx,yn,n,l,w,lst; 14 bool qwq[30007]; 15 struct yhhh{ 16 int x,y; 17 }a[N]; 18 19 inline bool cmp(yhhh A,yhhh B){ 20 return A.x<B.x; 21 } 22 23 int main(){ 24 read(l),read(w),read(n); 25 for(int i=1;i<=n;++i) 26 read(a[i].x),read(a[i].y),qwq[a[i].y]=1; 27 for(int i=0;i<=w;++i) 28 if(qwq[i]){ 29 ans=max(ans,w*(i-lst)); 30 lst=i; 31 } 32 ans=max(ans,w*(w-lst)); 33 a[++n].x=0,a[n].y=0; 34 a[++n].x=l,a[n].y=0; 35 a[++n].x=0,a[n].y=w; 36 a[++n].x=l,a[n].y=w; 37 sort(a+1,a+n+1,cmp); 38 for(int i=1;i<=n;++i){ 39 yn=0,yx=w; 40 for(int j=i+1;j<=n;++j){ 41 if(yx<=yn) break; 42 if(a[j].y>yx||a[j].y<yn) continue; 43 ans=max(ans,(a[j].x-a[i].x)*(yx-yn)); 44 if(a[j].y>=a[i].y) yx=min(yx,a[j].y); 45 if(a[j].y<=a[i].y) yn=max(yn,a[j].y); 46 } 47 ans=max(ans,(yx-yn)*(l-a[i].x)); 48 } 49 for(int i=n;i>=1;--i){ 50 yn=0,yx=w; 51 for(int j=i-1;j>=1;--j){ 52 if(yx<=yn) break; 53 if(a[j].y>yx||a[j].y<yn) continue; 54 ans=max(ans,(a[i].x-a[j].x)*(yx-yn)); 55 if(a[j].y>=a[i].y) yx=min(yx,a[j].y); 56 if(a[j].y<=a[i].y) yn=max(yn,a[j].y); 57 } 58 } 59 printf("%d\n",ans); 60 return 0; 61 }
case1:93ps
数据:
IN 6 4 4 1 2 4 1 4 3 2 1
OUT 10
没有考虑如下边界情况
ans=max(ans,(a[j].x-a[i].x)*(yx-yn));
case2:84ps
没有考虑如下情况
case3:56ps
没有考虑上下边界
另:几组hack数据
IN
6 4
4
1 2
4 1
4 3
2 1OUT
10IN
10 10
3
3 0
8 2
3 9OUT
72IN
4 7
5
0 6
0 0
3 2
1 0
0 3OUT
21IN
10 10
2
8 1
3 9OUT
80
转载于:https://www.cnblogs.com/Peper/p/9948505.html
luogu P1578 奶牛浴场相关推荐
- P1578 奶牛浴场
P1578 奶牛浴场 题意描述:给若干个点组成的矩阵,和一些障碍点,问不包含这些障碍点或者障碍点在其边界上的矩形的最大面积是多少 转载于:https://www.cnblogs.com/wmq1213 ...
- luogu P2345 奶牛集会
二次联通门 : luogu P2345 奶牛集会 /*luogu P2345 奶牛集会权值线段树以坐标为下标, 坐标为值建立线段树 对奶牛按听力由小到大排序对于要查的牛 每次第i次放入奶牛起作用的v就 ...
- 洛谷 [P1578] WC2002 奶牛浴场
本题是一道用极大化思想求最大子矩阵的经典题目.这个题目很出名,可以在百度搜索王知昆国家队dalao的论文,其中说的非常详细. 先枚举极大子矩形的左边界,然后从左到右依次扫描每一个障碍点,并不断修改可行 ...
- luogu P1843 奶牛晒衣服 | 二分法
时间复杂度O(logn) P1843 奶牛晒衣服 P2678 跳石头 P1577 切绳子 当函数具有单调性时 在范围内 二分答案的一边可以而另一边不可以 通过二分把范围逐渐缩小 1.当了l<=r ...
- luogu P2344 奶牛抗议 DP 树状数组 离散化
P2344 奶牛抗议 最新讨论 暂时没有讨论 题目背景 Generic Cow Protests, 2011 Feb 题目描述 约翰家的N 头奶牛正在排队游行抗议.一些奶牛情绪激动,约翰测算下来,排在 ...
- vijos1055 奶牛浴场
挺好的一道题呢 O(n^2)或者O(wh) 1 #include<cstdio> 2 #include<cstring> 3 #include<cstdlib> 4 ...
- Vijos 1055 奶牛浴场 最大子矩阵 算♂法①
题意:链接 方法:最大子矩阵之算♂法① 解析: 首先谈到最大子矩阵,我们可能会想到之前做过的盖房子?,那道DP求解的题目. 然而这种题目当然有更高♂端的算法. 比如接下来要谈到的算法①. 我们先来观察 ...
- luogu P2124 奶牛美容
嘟嘟嘟 首先数据范围那么小,那么算法也是相当暴力的. 对于一个点(x, y)所属的联通块,预处理出从这个点出发到这个块外的所有点的曼哈顿距离.复杂度O(n4). 然后求答案:最少答案不一定是三个联通块 ...
- 极大化思想/悬线法题集
用于解决最大子矩阵问题 P1387 最大正方形 题意: 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长. 数据范围:n,m<=100 解法: 悬线法计算出每个点左右上三 ...
最新文章
- Oracle Exadata 简介
- Windows 公共控件库研究
- jupyter notebook 报错:TypeError: __init__() got an unexpected keyword argument ‘categorical_features‘
- python学习之认识字符串
- python chm制作_生成chm文档的方法
- 解决IE6透明PNG图片的代码
- hadoop 传感器数据_大数据时代Hadoop的本质,你有过认真了解吗?
- Interpreting Attributions and Interactions of Adversarial Attacks论文解读
- PID算法之模糊PID
- win虚拟光驱怎么做linux,手把手教你用虚拟光驱安装windows10系统的详细步骤
- 关于向社会公开征求 深圳市住房公积金贷款管理暂行规定 (征求意见稿)意见的通知
- jq UI中的dialog属性设置
- windows下PTAM的编译
- 《VMware vSphere 6.0虚拟化架构实战指南》——1.2 软件定义数据中心介绍
- 系统接口框架设计与实现
- 【深圳居住证】2021免费网上快速办理(超详细图文详解)
- wamp5 mysql 默认密码_WAMP中的mysql设置密码(默认密码为空)及phpmyadmin的配置
- 用PaddlePaddle进行图像分割
- 官方教程之短视频app源码接入openinstall实现免填邀请码功能
- C++ 静态函数与虚函数的区别
热门文章
- linux的定cron计划任务命令
- 【转】nginx+iis实现负载均衡
- cocos2dx 3.x 解决输入框(TextField,TextFieldTTF) 输入中文变乱码的问题
- Xcode里-ObjC, -all_load, -force_load
- [转载] 民兵葛二蛋——第27集
- [精华]如何编写高质量的VB代码
- Postman从入门到入门
- cri-o 与 cni的集成分析
- ASP.NET MVC5 之 分部页
- 图解MySQL5.5详细安装与配置过程