[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头奶牛进行了面试,确定了每头奶牛的智商和情商. 贝西有权选择让哪些奶牛参加展览.由于负的智商或情商会造成 ...
随机推荐
- Hibernate3的hbm文件错误引用dtd文件导致项目无法启动问题处理
错误信息: org.hibernate.InvalidMappingException: Could not parse mapping document from resource /***/*** ...
- 线程池机制使nginx性能提高9倍
原文标题:Thread Pools in NGINX Boost Performance 9x! 原文官方地址:https://www.nginx.com/blog/thread-pools-boos ...
- [转]C#委托Action、Action<T>、Func<T>、Predicate<T>
CLR环境中给我们内置了几个常用委托Action. Action<T>.Func<T>.Predicate<T>,一般我们要用到委托的时候,尽量不要自己再定义一 个 ...
- C# 代码笔记_tuple元组
tuple元组: 赋值 List<Tuple<string, int>> cc = new List<Tuple<string, int>>() { n ...
- iOS---iOS中SQLite的使用
一.SQLite的使用 采用SQLite数据库来存储数据.SQLite作为一中小型数据库,应用ios中,跟前三种保存方式相比,相对比较复杂一些.还是一步步来吧! 第一步:导入头文件 需要添加SQLit ...
- CentOS 7 安装Oracle VirtualBox
1. 下载VirtualBox的repo文件: 登陆 https://www.virtualbox.org/wiki/Linux_Downloads 在网页的最下端的repo链接上右键下载,或者wge ...
- Axis1.4框架 实现webservice服务器和客户端
一:软件环境 win7旗舰版, Eclipse,JDK1.6,tomcat6.0,Axis1.4的包. 至于Axis1.4包网上可以下载,如果是在找不到可以留言给我. 二:摘要 将解压后的 axis- ...
- MFCEditBox如何自动换行
设置该EditBox属性: 1.Auto HScroll False 2.OEM Convert False 3.Want Return ...
- JS_类数组
[目录] 什么是数组 非类数组 类数组对象转化为数组 [类数组] 什么是类数组? 定义: 不具有数组的所具有的方法 拥有length属性,其属性(索引)为非负整数 类数组 var obj = { 0 ...
- 二、spring中装配bean
在spring框架中提供了三种 bean的装配方式,当然这三种装配方式是可以灵活的进行组合使用的,项目中使用最多的是自动装配bean的方式,也就是通过注解的方式进行bean的装配,一下是四种装配方式的 ...