[luoguP1578] 奶牛浴场(DP)
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)的更多相关文章
- P1578 奶牛浴场
P1578 奶牛浴场 题目描述 由于John建造了牛场围栏,激起了奶牛的愤怒,奶牛的产奶量急剧减少.为了讨好奶牛,John决定在牛场中建造一个大型浴场.但是John的奶牛有一个奇怪的习惯,每头奶牛都必 ...
- 洛谷P1578 奶牛浴场
P1578 奶牛浴场 题目描述 由于John建造了牛场围栏,激起了奶牛的愤怒,奶牛的产奶量急剧减少.为了讨好奶牛,John决定在牛场中建造一个大型浴场.但是John的奶牛有一个奇怪的习惯,每头奶牛都必 ...
- 奶牛抗议 DP 树状数组
奶牛抗议 DP 树状数组 USACO的题太猛了 容易想到\(DP\),设\(f[i]\)表示为在第\(i\)位时方案数,转移方程: \[ f[i]=\sum f[j]\;(j< i,sum[i] ...
- P2340 奶牛会展 DP 背包
P2340 奶牛会展 DP \(n\)头牛,每头牛有智商\(s[i]\)情商\(f[i]\),问如何从中选择几头牛使得智商情商之和最大 且 情商之和.智商之和非负 \(n\le 400,-10^3\l ...
- 【Luogu】P1578奶牛浴场(DP,枚举)
题目链接 枚举极大子矩形.详情请见本题题解:I_AM_HelloWord 代码如下 #include<cstdio> #include<cctype> #include< ...
- 【DP悬线法】奶牛浴场
虽然还是悬线法,但是这道题可不能轻易地套模板了,而是要换一种思路,横着扫一遍,竖着扫一遍,时间复杂度依旧是O(n^2),然而空间复杂度有一定的优化 如果用原来的方法,显然时间空间都会炸(如果你想用ma ...
- BZOJ_1616_[Usaco2008_Mar]_Cow_Travelling_游荡的奶牛_(DP)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1616 给出一张图,有些点不能走,给出起始点和结束点,以及时间,求在该时间到达结束点的方案数. ...
- [Usaco2008 Mar]Cow Travelling游荡的奶牛[简单DP]
Description 奶牛们在被划分成N行M列(2 <= N <= 100; 2 <= M <= 100)的草地上游走,试图找到整块草地中最美味的牧草.Farmer John ...
- USACO奶牛博览会(DP)
Description 奶牛想证明他们是聪明而风趣的.为此,贝西筹备了一个奶牛博览会,她已经对N头奶牛进行了面试,确定了每头奶牛的智商和情商. 贝西有权选择让哪些奶牛参加展览.由于负的智商或情商会造成 ...
随机推荐
- 228 Summary Ranges 汇总区间
给定一个无重复元素的有序整数数组,返回数组中区间范围的汇总. 示例 1: 输入: [0,1,2,4,5,7]输出: ["0->2","4->5",& ...
- apache-storm-1.0.2.tar.gz的集群搭建(3节点)(图文详解)(非HA和HA)
不多说,直接上干货! Storm的版本选取 我这里,是选用apache-storm-1.0.2.tar.gz apache-storm-0.9.6.tar.gz的集群搭建(3节点)(图文详解) 为什么 ...
- thinkphp3.2.3连接sqlserver 2008 R2 数据库
环境: 操作系统——win7 64位旗舰版 PHP——thinkphp 3.23 数据库——Microsoft SQL Server 2008 R2 需要用到的软件: 步骤: 1.搜索SQLSRV30 ...
- js点击修改按钮后修改
<button id="click">改变内容</button> <div id="t">要改变的内容</div> ...
- SpringBoot 2.x (4):配置文件与单元测试
SpringBoot的配置文件有默认的application.properties 还可以使用YAML 区别: application.properties示例: server.port=8090 s ...
- 浏览器和ES5的介绍
浏览器的组成 : shell(浏览器的外壳).内核(渲染引擎.js引擎)主流浏览器及其内核: IE tritent(IE9及以下,IE10及以上用webkit) ...
- 源代码管理SVN的使用
SVN 全称是Subversion,集中式版本控制之王者 SVN 版本控制,需要自己搭建一个管理代码的服务器,提供开发人员,上传和下载 1.基本介绍 使用环境 要想利用SVN管理源代码,必须得有2套环 ...
- ajax 请求spring之post
# 背景 现在使用spring boot开发一个web应用是非常普遍的了,ajax请求更是标配:那么你在ajax请求时,是否遇到过在controller中获取不到参数的情况呢?特别是post请求: # ...
- bat批处理如何删除本地策略里的用户权限分配中的拒绝从网络访问本机项的guest用户?
echo [Version]>mm.inf echo signature="$CHICAGO$">>mm.inf echo Revision=1>>m ...
- 【译】x86程序员手册41-10.6 TLB(快表)测试
译注:本章基本未做翻译 10.6 TLB Testing TLB测试 The 80386 provides a mechanism for testing the Translation Lookas ...