【DP悬线法】奶牛浴场
虽然还是悬线法,但是这道题可不能轻易地套模板了,而是要换一种思路,横着扫一遍,竖着扫一遍,时间复杂度依旧是O(n^2),然而空间复杂度有一定的优化
如果用原来的方法,显然时间空间都会炸(如果你想用map我也没办法...时间换空间?)
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#define st short int
using namespace std;
inline int read(){
char chr=getchar(); int f=,ans=;
while(!isdigit(chr)) {if(chr=='-') f=-;chr=getchar();}
while(isdigit(chr)) {ans=(ans<<)+(ans<<);ans+=chr-'';chr=getchar();}
return ans*f;
}
void write(int x){
if(x<) putchar('-'),x=-x;
if(x>) write(x/);
putchar(x%+'');
}
struct P{int x,y;}a[];
int L,W,n,x,y,ans;
bool cmp1(const P &x,const P &y){return x.x<y.x||x.x==y.x&&x.y<y.y;}
bool cmp2(const P &x,const P &y){return x.y<y.y||x.y==y.y&&x.x<y.x;}
int main(){
L=read(),W=read(),n=read();
for(int i=;i<=n;i++)x=read(),y=read(),a[i]=(P){x,y};
a[++n]=(P){,},a[++n]=(P){,W},a[++n]=(P){L,},a[++n]=(P){L,W};
sort(a+,a+n+,cmp1);
for(int i=;i<=n;i++){
int le=,ri=W,cnt=i;
while(a[i].x==a[cnt].x) cnt++;
int j=cnt;
while(j<=n){
ans=max(ans,(a[j].x-a[i].x)*(ri-le));
if(a[j].y<=a[i].y) le=max(le,a[j].y);
else ri=min(ri,a[j].y);
++j;
}le=,ri=W,j=cnt;
while(j<=n){
ans=max(ans,(a[j].x-a[i].x)*(ri-le));
if(a[j].y<a[i].y) le=max(le,a[j].y);
else ri=min(ri,a[j].y);
++j;
}
}sort(a+,a+n+,cmp2);
for(int i=;i<=n;i++){
int le=,ri=L,cnt=i;
while(a[i].y==a[cnt].y) cnt++;
int j=cnt;
while(j<=n){
ans=max(ans,(a[j].y-a[i].y)*(ri-le));
if(a[j].x<=a[i].x) le=max(le,a[j].x);
else ri=min(ri,a[j].x);
++j;
}le=,ri=L,j=cnt;
while(j<=n){
ans=max(ans,(a[j].y-a[i].y)*(ri-le));
if(a[j].x<a[i].x) le=max(le,a[j].x);
else ri=min(ri,a[j].x);
++j;
}
}cout<<ans;
return ;
}
【DP悬线法】奶牛浴场的更多相关文章
- BZOJ 1057: [ZJOI2007]棋盘制作( dp + 悬线法 )
对于第一问, 简单的dp. f(i, j)表示以(i, j)为左上角的最大正方形, f(i, j) = min( f(i + 1, j), f(i, j + 1), f(i + 1, j + 1)) ...
- P1169 [ZJOI2007]棋盘制作 DP悬线法
题目描述 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8 \times 88×8大小的黑白相间的方阵,对应八八六十四卦,黑白 ...
- P4147 玉蟾宫 二维DP 悬线法
题目背景 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 题目描述 这片土地被分成N*M个格子,每个格子里写着'R'或者'F ...
- 【题解】洛谷P1169 [ZJOI2007] 棋盘制作(坐标DP+悬线法)
次元传送门:洛谷P1169 思路 浙江省选果然不一般 用到一个从来没有听过的算法 悬线法: 所谓悬线法 就是用一条线(长度任意)在矩阵中判断这条线能到达的最左边和最右边及这条线的长度 即可得到这个矩阵 ...
- DP(悬线法)+二维前缀和【p2706】巧克力
Background 王7的生日到了,他的弟弟准备送他巧克力. Description 有一个被分成n*m格的巧克力盒,在(i,j)的位置上有a[i,j]块巧克力.就在送出它的前一天晚上,有老鼠夜袭巧 ...
- DP(悬线法)【P1169】 [ZJOI2007]棋盘制作
顾z 你没有发现两个字里的blog都不一样嘛 qwq 题目描述-->p1169 棋盘制作 题目大意 给定一个01棋盘,求其中01交错的最大正方形与矩形. 解题思路: 动态规划---悬线法 以下内 ...
- 算法浅谈之DP悬线法
悬线法 用途 解决给定矩阵中满足条件的最大子矩阵 做法 用一条线(横竖貌似都行)左右移动直到不满足约束条件或者到达边界 定义 \(left[i][j]\):代表从\((i,j)\)能到达的最左位置 \ ...
- [DP专题]悬线法
参考:https://blog.csdn.net/twtsa/article/details/8120269 先给出题目来源:(洛谷) 1.p1387 最大正方形 2.P1169 棋盘制作 3.p27 ...
- [ZJOI2007]棋盘制作 悬线法dp 求限制下的最大子矩阵
https://www.luogu.org/problemnew/show/P1169 第一次听说到这种dp的名称叫做悬线法,听起来好厉害 题意是求一个矩阵内的最大01交错子矩阵,开始想的是dp[20 ...
随机推荐
- xamarin.forms模拟rem动态大小值,实现屏幕适配
开发app的时候,比较麻烦的地方,就是处理屏幕适配,比如文字设为12的大小,测试的时候,看得文字挺正常,可是,放到高分辨率设备一看,文字就变得特别小, 怎样实现随着分辨率变大或者变小,所有的size数 ...
- (5.2.1)配置服务器参数——即时文件初始化(IFI)
关键词:零填充,即时文件初始化 转自:https://www.cnblogs.com/gaizai/p/3516905.html 概念: 所有新申请的空间,sql server都要以0来填充完磁盘文件 ...
- 前端领域的BEM到底是什么
前端领域的BEM到底是什么 BEM - Block Element Modfier(块元素编辑器) BEM方法确保每一个参加了同一网站开发项目的人,基于一套代码规范去开发,这样非常有利于团队成员理解彼 ...
- 解决hibernate删除时的异常 deleted object would be re-saved by cascade (remove deleted object from associa
今天在做项目时,需要删除一个对象,由于关联关系是一对多和多对一的关系,于是在代码中需要删除多的一方的对象时出现了 deleted object would be re-saved by cascade ...
- 解决Webpack中提示syntax 'classProperties' isn't currently enabled的错误
当我们使用了一些JavaScript的一些新特性的时候,但是有没有在webpack.config.js里面或者是.babelrc文件中配置相关插件,就可以解决了. error:Support for ...
- 10.mysql事务管理及python操作
在用户操作MySQL过程中,对于一般简单的业务逻辑或中小型程序而言,无需考虑应用MySQL事务.但在比较复杂的情况下,往往用户在执行某些数据操作过程中,需要通过一组SQL语句执行多项并行业务逻辑或程序 ...
- mysql的一些高级查询
1,查出学生详情表性别为男,并同时年龄大于18的 2,根据上述的结果,查出学生表对应的姓名,年龄,性别,address 3,查出学生的(姓名,年龄,性别,所属学院) 还可以添加注释
- 更简单高效的HTML数据提取-Xpath
XPath 是一门在 XML 文档中查找信息的语言.XPath 用于在 XML 文档中通过元素和属性进行导航. 相比于BeautifulSoup,Xpath在提取数据时会更加的方便. 安装 在Pyth ...
- deepin下使用python遇到的一些情况
1.系统自带python2.7和python3.5,直接运行python默认的是2.7版本的 当然直接运行python的默认版本是可以修改的,参考这里 然后可能需要3.6版本的话,就直接在命令行输入 ...
- Python 6 数字和布尔值及字符串的基本功能
数据类型:查看变量数据类型type(变量) 或者 print(type(变量)) 整数int:就是不带小数的自然数字,也叫整型.在2.X版本中还分为长整型和整形.但是在3.X版本中统一称为整数或整 ...