传送门

O(s2)算法

详见论文 王知昆--浅谈用极大化思想解决最大子矩形问题

我就复制你能把我怎么样QAQ

#include <cstdio>
#include <iostream>
#include <algorithm>
#define N 5010
#define max(x, y) ((x) > (y) ? (x) : (y))
#define min(x, y) ((x) < (y) ? (x) : (y)) int L, W, n, ans;
struct node
{
int x, y;
}p[N]; inline int read()
{
int x = 0, f = 1;
char ch = getchar();
for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = -1;
for(; isdigit(ch); ch = getchar()) x = (x << 1) + (x << 3) + ch - '0';
return x * f;
} inline bool cmp1(node a, node b)
{
return a.y < b.y;
} inline bool cmp2(node a, node b)
{
return a.x < b.x;
} int main()
{
int i, j, x, u, d;
L = read();
W = read();
n = read();
for(i = 1; i <= n; i++) p[i].x = read(), p[i].y = read();
p[++n].x = 0, p[n].y = 0;
p[++n].x = 0, p[n].y = W;
p[++n].x = L, p[n].y = 0;
p[++n].x = L, p[n].y = W;
std::sort(p + 1, p + n + 1, cmp1);
for(i = 2; i <= n; i++)
{
x = p[i].y - p[i - 1].y;
ans = max(ans, x * L);
}
std::sort(p + 1, p + n + 1, cmp2);
for(i = 1; i <= n; i++)
{
u = W;
d = 0;
for(j = i + 1; j <= n; j++)
{
if(p[j].x == p[i].x) continue;
ans = max(ans, (u - d) * (p[j].x - p[i].x));
if(p[j].y == p[i].y)
{
if(u - p[j].y > p[j].y - d) d = p[j].y;
else u = p[j].y;
}
else
{
if(p[j].y > p[i].y) u = min(u, p[j].y);
else d = max(d, p[j].y);
}
}
}
for(i = n; i >= 1; i--)
{
u = W;
d = 0;
for(j = i - 1; j >= 1; j--)
{
if(p[j].x == p[i].x) continue;
ans = max(ans, (u - d) * (p[j].x - p[i].x));
if(p[j].y == p[i].y)
{
if(u - p[j].y > p[j].y - d) d = p[j].y;
else u = p[j].y;
}
else
{
if(p[j].y > p[i].y) u = min(u, p[j].y);
else d = max(d, p[j].y);
}
}
}
printf("%d\n", ans);
return 0;
}

  

[luoguP1578] 奶牛浴场(DP)的更多相关文章

  1. P1578 奶牛浴场

    P1578 奶牛浴场 题目描述 由于John建造了牛场围栏,激起了奶牛的愤怒,奶牛的产奶量急剧减少.为了讨好奶牛,John决定在牛场中建造一个大型浴场.但是John的奶牛有一个奇怪的习惯,每头奶牛都必 ...

  2. 洛谷P1578 奶牛浴场

    P1578 奶牛浴场 题目描述 由于John建造了牛场围栏,激起了奶牛的愤怒,奶牛的产奶量急剧减少.为了讨好奶牛,John决定在牛场中建造一个大型浴场.但是John的奶牛有一个奇怪的习惯,每头奶牛都必 ...

  3. 奶牛抗议 DP 树状数组

    奶牛抗议 DP 树状数组 USACO的题太猛了 容易想到\(DP\),设\(f[i]\)表示为在第\(i\)位时方案数,转移方程: \[ f[i]=\sum f[j]\;(j< i,sum[i] ...

  4. P2340 奶牛会展 DP 背包

    P2340 奶牛会展 DP \(n\)头牛,每头牛有智商\(s[i]\)情商\(f[i]\),问如何从中选择几头牛使得智商情商之和最大 且 情商之和.智商之和非负 \(n\le 400,-10^3\l ...

  5. 【Luogu】P1578奶牛浴场(DP,枚举)

    题目链接 枚举极大子矩形.详情请见本题题解:I_AM_HelloWord 代码如下 #include<cstdio> #include<cctype> #include< ...

  6. 【DP悬线法】奶牛浴场

    虽然还是悬线法,但是这道题可不能轻易地套模板了,而是要换一种思路,横着扫一遍,竖着扫一遍,时间复杂度依旧是O(n^2),然而空间复杂度有一定的优化 如果用原来的方法,显然时间空间都会炸(如果你想用ma ...

  7. BZOJ_1616_[Usaco2008_Mar]_Cow_Travelling_游荡的奶牛_(DP)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1616 给出一张图,有些点不能走,给出起始点和结束点,以及时间,求在该时间到达结束点的方案数. ...

  8. [Usaco2008 Mar]Cow Travelling游荡的奶牛[简单DP]

    Description 奶牛们在被划分成N行M列(2 <= N <= 100; 2 <= M <= 100)的草地上游走,试图找到整块草地中最美味的牧草.Farmer John ...

  9. USACO奶牛博览会(DP)

    Description 奶牛想证明他们是聪明而风趣的.为此,贝西筹备了一个奶牛博览会,她已经对N头奶牛进行了面试,确定了每头奶牛的智商和情商. 贝西有权选择让哪些奶牛参加展览.由于负的智商或情商会造成 ...

随机推荐

  1. 学习笔记 第十四章 使用CSS3动画

    第14章   使用CSS3动画 [学习重点] 设计2D动画 设计3D动画 设计过渡动画 设计帧动画 能够使用CSS3动画功能设计页面特效样式 14.1  设计2D动画 CSS2D Transform表 ...

  2. 升级 Cocoapods 到1.2.0指定版本,降低版本及卸载

    =====================升级版本=================== CocoaPods 1.1.0+ is required to build SnapKit 3.0.0+. 在 ...

  3. esp8266 串口通讯

    1.发送 调用uart_init(115200,115200);初始化串口,波特率设置为115200.前面一个是设置uart0的波特率.后面一个是设置.uart的波特率 然后就可以使用uart0_tx ...

  4. VUE 入坑系列 一 基础语法

    html代码 <div id="app"> {{message}} </div> JavaScript代码 var vm = new Vue({ el: & ...

  5. layui 前端UI框架

    1.获取点击行的索引

  6. 单文件组件.vue---父子组件通信

    每一个.vue 文件就是一个 组件,组件和组件相互组合,就成了一个应用,这就涉及到的组件和组件之间的通信,最常用的就是父子之间的通信.在vue 中, 在一个组件中通过 import 引入另一个组件,这 ...

  7. 03C#数据类型

    C#数据类型 值类型和引用类型区别 在C#语言中,值类型变量存储的是指定数据类型的数据,值类型变量的值(或实例)存储在栈(Stack)中,赋值语句是传递变量的值.引用类型(例如类就是引用类型)的实例, ...

  8. iis如何在dos中注册

    iis如何在dos中注册   2009-09-23 08:13 提问者采纳   cd \cd c:\windows\microsoft.net\framework\v2.0.50727aspnet_r ...

  9. node.js 的介绍

    1.node.js是什么? (1)node.js不是一门编程语言, 是一个开发平台,就像Java开发平台,Net平台,PHP开发平台,Apple开发平台.(何为开发平台?有对应的编程语言,有语言运行时 ...

  10. Java中Arrays作用

    Arrays类是提供对数组进行排序.查询和修改等操作方法的工具类.(Arrays:尽可进行数组升序排序) 格式:Arrays.sort(数组名); Package Java; import java. ...