ZF_20160708_Region2014广东

A题
CDQ分治,待做。

B题
枚举矩形的左下角和右上角。

#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

struct Pt{
    int x;
    int y;
}p[35];

struct Rect{
    int x1;
    int y1;
    int x2;
    int y2;
}r[1000];

int vis[210][210];

int main()
{
    int n;
    while (scanf("%d", &n) && n)
    {
        int l = 0;
        memset(vis, 0, sizeof(vis));
        int i, j, k;
        for (i = 0; i < n; i++)
        {
            scanf("%d%d", &p[i].x, &p[i].y);
            vis[p[i].x][p[i].y] = 1;
        }
        for (i = 0; i < n; i++)
        {
            for (j = p[i].x + 1; j <= 200; j++)
            {
                if (vis[j][p[i].y])
                {
                    for (k = p[i].y + 1; k <= 200; k++)
                    {
                        if (vis[p[i].x][k] && vis[j][k])
                        {
                            r[l].x1 = p[i].x;
                            r[l].y1 = p[i].y;
                            r[l].x2 = j;
                            r[l].y2 = k;
                            l++;
                        }
                    }
                }
            }
        }
        int sum = 0;
        for (i = 0; i < l; i++)
        {
            for (j = i + 1; j < l; j++)
            {
                int s = 0;
                if ((r[i].x1 - r[j].x1) * (r[i].x2 - r[j].x2) < 0 && (r[i].y1 - r[j].y1) * (r[i].y2 - r[j].y2) < 0)
                {
                    s = max((r[i].y2 - r[i].y1) * (r[i].x2 - r[i].x1), (r[j].y2 - r[j].y1) * (r[j].x2 - r[j].x1));
                }
                else if (r[i].x1 > r[j].x2 || r[i].x2 < r[j].x1 || r[i].y1 > r[j].y2 || r[i].y2 < r[j].y1)
                {
                    s = (r[i].y2 - r[i].y1) * (r[i].x2 - r[i].x1) + (r[j].y2 - r[j].y1) * (r[j].x2 - r[j].x1);
                }
                sum = max(sum, s);
            }
        }
        if (sum)printf("%d\n", sum);
        else printf("ivis\n");
    }
}

E题
时间给的比较宽,所以暴力就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值