洛谷P1578 奶牛浴场

P1578 奶牛浴场

题目描述

由于John建造了牛场围栏,激起了奶牛的愤怒,奶牛的产奶量急剧减少。为了讨好奶牛,John决定在牛场中建造一个大型浴场。但是John的奶牛有一个奇怪的习惯,每头奶牛都必须在牛场中的一个固定的位置产奶,而奶牛显然不能在浴场中产奶,于是,John希望所建造的浴场不覆盖这些产奶点。这回,他又要求助于Clevow了。你还能帮助Clevow吗?

John的牛场和规划的浴场都是矩形。浴场要完全位于牛场之内,并且浴场的轮廓要与牛场的轮廓平行或者重合。浴场不能覆盖任何产奶点,但是产奶点可以位于浴场的轮廓上。

Clevow当然希望浴场的面积尽可能大了,所以你的任务就是帮她计算浴场的最大面积。

输入输出格式

输入格式:

输入文件的第一行包含两个整数L和W,分别表示牛场的长和宽。文件的第二行包含一个整数n,表示产奶点的数量。以下n行每行包含两个整数x和y,表示一个产奶点的坐标。所有产奶点都位于牛场内,即:0<=x<=L,0<=y<=W。

输出格式:

输出文件仅一行,包含一个整数S,表示浴场的最大面积。

输入输出样例

输入样例#1:

10 10
4
1 1
9 1
1 9
9 9

输出样例#1:

80

说明

0<=n<=5000

1<=L,W<=30000

Winter Camp 2002

/*
    按横坐标排序,然后枚举每条边为左边界,再枚举右边界
    每枚举到右边界的一个点更新一遍浴场的宽度,在更新宽度之前更新答案
*/
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m,num;
struct node{
    int x,y;
    bool operator < (node b)const{
        if(x==b.x)return y<b.y;
        return x<b.x;
    }
}a[5010];
int main(){
    scanf("%d%d%d",&n,&m,&num);
    a[1].x=0;a[1].y=0;
    a[2].x=n;a[2].y=0;
    a[3].x=0;a[3].y=m;
    a[4].x=n;a[4].y=m;
    num+=4;
    for(int i=5;i<=num;i++)
        scanf("%d%d",&a[i].x,&a[i].y);
    sort(a+1,a+num+1);
    int ans=0;
    for(int i=1;i<=num;i++){
        int up=m,down=0;
        for(int j=i+1;j<=num;j++){
            if(a[i].x==a[j].x||a[j].y<down||a[j].y>up)continue;
            ans=max(ans,(a[j].x-a[i].x)*(up-down));
            if(a[j].y>down&&a[j].y<=a[i].y)down=a[j].y;
            if(a[j].y<up&&a[j].y>=a[i].y)up=a[j].y;
            if(down>=up)break;
        }
    }
    cout<<ans;
}
时间: 2024-12-07 16:10:33

洛谷P1578 奶牛浴场的相关文章

洛谷P2340 奶牛会展

洛谷P2340 奶牛会展用下标表示智商,值表示情商 1 #include <bits/stdc++.h> 2 #define For(i,j,k) for(int i=j;i<=k;i++) 3 using namespace std ; 4 5 const int N = 411 ; 6 int n,m ; 7 int a[N],b[N],f[800011] ; 8 9 inline int read() 10 { 11 int x = 0 , f = 1 ; 12 char ch =

洛谷P1154 奶牛分厩

题目描述 农夫约翰有N(1<=N<=5000)头奶牛,每头奶牛都有一个唯一的不同于其它奶牛的编号Si,所有的奶牛都睡在一个有K个厩的谷仓中,厩的编号为0到K-1.每头奶牛都知道自己该睡在哪一个厩中,因为约翰教会了它们做除法,Si MOD K的值就是第i头奶年所睡的厩的编号. 给出一组奶牛的编号,确定最小的K使得没有二头或二头以上的奶牛睡在同一厩中. 输入输出格式 输入格式: 第一行一个正整数N,第2到N+1行每行一个整数表示一头奶牛的编号. 输出格式: 单独一行一个整数表示要求的最小的K,对所

洛谷——P1154 奶牛分厩

P1154 奶牛分厩 题目描述 农夫约翰有N(1<=N<=5000)头奶牛,每头奶牛都有一个唯一的不同于其它奶牛的编号Si,所有的奶牛都睡在一个有K个厩的谷仓中,厩的编号为0到K-1.每头奶牛都知道自己该睡在哪一个厩中,因为约翰教会了它们做除法,Si MOD K的值就是第i头奶年所睡的厩的编号. 给出一组奶牛的编号,确定最小的K使得没有二头或二头以上的奶牛睡在同一厩中. 输入输出格式 输入格式: 第一行一个正整数N,第2到N+1行每行一个整数表示一头奶牛的编号. 输出格式: 单独一行一个整数表

洛谷 P1154 奶牛分厩

P1154 奶牛分厩 农夫约翰有N(1<=N<=5000)头奶牛,每头奶牛都有一个唯一的不同于其它奶牛的编号Si,所有的奶牛都睡在一个有K个厩的谷仓中,厩的编号为0到K-1.每头奶牛都知道自己该睡在哪一个厩中,因为约翰教会了它们做除法,Si MOD K的值就是第i头奶年所睡的厩的编号. 给出一组奶牛的编号,确定最小的K使得没有二头或二头以上的奶牛睡在同一厩中. 输入输出格式 输入格式: 第一行一个正整数N,第2到N+1行每行一个整数表示一头奶牛的编号. 输出格式: 单独一行一个整数表示要求的最

P1578 奶牛浴场

题目描述 由于John建造了牛场围栏,激起了奶牛的愤怒,奶牛的产奶量急剧减少.为了讨好奶牛,John决定在牛场中建造一个大型浴场.但是John的奶牛有一个奇怪的习惯,每头奶牛都必须在牛场中的一个固定的位置产奶,而奶牛显然不能在浴场中产奶,于是,John希望所建造的浴场不覆盖这些产奶点.这回,他又要求助于Clevow了.你还能帮助Clevow吗? John的牛场和规划的浴场都是矩形.浴场要完全位于牛场之内,并且浴场的轮廓要与牛场的轮廓平行或者重合.浴场不能覆盖任何产奶点,但是产奶点可以位于浴场的轮

洛谷P1472 奶牛家谱 Cow Pedigrees

P1472 奶牛家谱 Cow Pedigrees 102通过 193提交 题目提供者该用户不存在 标签USACO 难度普及+/提高 提交  讨论  题解 最新讨论 暂时没有讨论 题目描述 农民约翰准备购买一群新奶牛. 在这个新的奶牛群中, 每一个母亲奶牛都生两个小奶牛.这些奶牛间的关系可以用二叉树来表示.这些二叉树总共有N个节点(3 <= N < 200).这些二叉树有如下性质: 每一个节点的度是0或2.度是这个节点的孩子的数目. 树的高度等于K(1 < K < 100).高度是从

洛谷P2345 奶牛集会

题目背景 MooFest, 2004 Open 题目描述 约翰的N 头奶牛每年都会参加"哞哞大会".哞哞大会是奶牛界的盛事.集会上的活动很 多,比如堆干草,跨栅栏,摸牛仔的屁股等等.它们参加活动时会聚在一起,第i 头奶牛的坐标为Xi,没有两头奶牛的坐标是相同的.奶牛们的叫声很大,第i 头和第j 头奶牛交流,会发出max{Vi; Vj}×|Xi ? Xj | 的音量,其中Vi 和Vj 分别是第i 头和第j 头奶牛的听力.假设每对奶牛之间同时都在说话,请计算所有奶牛产生的音量之和是多少.

洛谷——P1843 奶牛晒衣服

https://www.luogu.org/problem/show?pid=1843#sub 题目背景 熊大妈决定给每个牛宝宝都穿上可爱的婴儿装 . 于是 , 为牛宝宝洗晒衣 服就成了很不爽的事情. 题目描述 熊大妈请你帮助完成这个重任 . 洗完衣服后 , 你就要弄干衣服 . 衣服在 自然条件下用 1 的时间可以晒干 A 点湿度 . 抠门的熊大妈买了 1 台烘衣机 . 使用烘衣机可以让你用 1 的时间使 1 件衣服除了自然晒干 A 点湿度外,还 可以烘干 B 点湿度,但在 1 的时间内只能对

洛谷P1108 低价购买[DP | LIS方案数]

题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它.买的次数越多越好!你的目标是在遵循以上建议的前提下,求你最多能购买股票的次数.你将被给出一段时间内一支股票每天的出售价(2^16范围内的正整数),你可以选择在哪些天购买这支股票.每次购买都必须遵循“低价购买:再低价购买”的原则.写一个程序计算最大购买次数. 这里是某支股票的价格清单: 日期 1 2