https://beta.atcoder.jp/contests/abc075/tasks/abc075_d

题意:

给出坐标平面上n个点的坐标,要求找到一个面积最小的矩形使得这个矩形的边界加上内部的点的数量大于等于k。

思路:

由于坐标过大,所以离散化。

离散化之后用前缀和,但是Orz求前缀和的时候写错了。

枚举左下角和右上角的坐标,分别为(i,j)和(s,e)。

那么点的数量为sum[s][e] - sum[s][j-1] - sum[i-1][q] + sum[i-1][j-1],切记,切记,画图画图。

代码:

 #include <stdio.h>
#include <string.h>
#include <algorithm>
#include <map>
using namespace std; struct node
{
int x,y;
} a[]; map<int,int> mpx,mpy;
map<int,int> invx,invy; int sum[][];
int b[][]; bool cmp1(node aa,node bb)
{
return aa.x < bb.x;
} bool cmp2(node aa,node bb)
{
return aa.y < bb.y;
} int main()
{
int n,k; scanf("%d%d",&n,&k); for (int i = ;i <= n;i++)
{
scanf("%d%d",&a[i].x,&a[i].y);
} long long ans; sort(a+,a+n+,cmp1); for (int i = ;i <= n;i++)
{
invx[i] = a[i].x;
mpx[a[i].x] = i;
} long long dx = a[n].x - a[].x; sort(a+,a+n+,cmp2); for (int i = ;i <= n;i++)
{
invy[i] = a[i].y;
mpy[a[i].y] = i;
} long long dy = a[n].y - a[].y; ans = dx * dy; for (int i = ;i <= n;i++)
{
int x = a[i].x,y = a[i].y; b[mpx[x]][mpy[y]] = ;
} for (int i = ;i <= n;i++)
for (int j = ;j <= n;j++)
{
sum[i][j] = sum[i-][j] + sum[i][j-] - sum[i-][j-] + b[i][j];
} for (int i = ;i <= n;i++)
for (int j = ;j <= n;j++)
{
for (int s = i;s <= n;s++)
for (int q = j;q <= n;q++)
{
if (sum[s][q] - sum[s][j-] - sum[i-][q] + sum[i-][j-] >= k)
{
long long dx = invx[s] - invx[i];
long long dy = invy[q] - invy[j]; long long tmp = abs(dx) * abs(dy); ans = min(ans,tmp);
}
}
} printf("%lld\n",ans); return ;
}

AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle的更多相关文章

  1. AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle【暴力】

    AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle 我要崩溃,当时还以为是需要什么离散化的,原来是暴力,特么五层循环....我自己写怎么都 ...

  2. AtCoder Beginner Contest 075 C bridge【图论求桥】

    AtCoder Beginner Contest 075 C bridge 桥就是指图中这样的边,删除它以后整个图不连通.本题就是求桥个数的裸题. dfn[u]指在dfs中搜索到u节点的次序值,low ...

  3. [日常] AtCoder Beginner Contest 075 翻车实录

    别问我为啥要写一篇ABC的游记... 周日打算CF开黑于是就打算先打打ABC找回手速... 进场秒掉 $A$ 和 $B$ , 小暴力一脸偷税 然后开 $C$ ...woc求桥? 怎么办啊我好像突然忘了 ...

  4. AtCoder Beginner Contest 075 C Bridge(割边)

    求割边个数.Tarjan的板子.. #include <bits/stdc++.h> using namespace std; const int MAXN = 55; const int ...

  5. AtCoder Beginner Contest 100 2018/06/16

    A - Happy Birthday! Time limit : 2sec / Memory limit : 1000MB Score: 100 points Problem Statement E8 ...

  6. AtCoder Beginner Contest 052

    没看到Beginner,然后就做啊做,发现A,B太简单了...然后想想做完算了..没想到C卡了一下,然后还是做出来了.D的话瞎想了一下,然后感觉也没问题.假装all kill.2333 AtCoder ...

  7. AtCoder Beginner Contest 053 ABCD题

    A - ABC/ARC Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Smeke has ...

  8. AtCoder Beginner Contest 136

    AtCoder Beginner Contest 136 题目链接 A - +-x 直接取\(max\)即可. Code #include <bits/stdc++.h> using na ...

  9. AtCoder Beginner Contest 137 F

    AtCoder Beginner Contest 137 F 数论鬼题(虽然不算特别数论) 希望你在浏览这篇题解前已经知道了费马小定理 利用用费马小定理构造函数\(g(x)=(x-i)^{P-1}\) ...

随机推荐

  1. 微信扫一扫JSSDK 扫一扫报错 invalid signature 问题

    交代一下业务场景 在在四个页面都需要用到扫一扫去扫二维码.然而在图三-我的订单 下单中这个页面扫一扫不起效,当时就郁闷了为啥其他页面有用,这里却没用,开始调试吧. 报错信息是签名验证不成功. 自己去打 ...

  2. MySQL基本语句与经典习题

    [SQL语句大全] 本文用到的数据(5张表): customers: orders: orderitems: Products:  Vendors: 一.检索数据-select语句select pro ...

  3. 上传到 App Store 时出错。

      Try this, it fixed it for me. Open Terminal and run: cd ~ mv .itmstransporter/ .old_itmstransporte ...

  4. 将 Shiro 作为应用的权限基础 二:基于SpringMVC实现的认证过程

    认证就是验证用户身份的过程.在认证过程中,用户需要提交实体信息(Principals)和凭据信息(Credentials)以检验用户是否合法.最常见的“实体/凭证”组合便是“用户名/密码”组合. 一. ...

  5. java基础笔记(2)----流程控制

    java流程控制结构包括顺序结构,分支结构,循环结构. 顺序结构: 程序从上到下依次执行,中间没有任何判断和跳转. 代码如下: package com.lvsling.test; public cla ...

  6. 2018最新版本Sublime Text3注册码(仅供测试交流使用)

    -– BEGIN LICENSE -– TwitterInc 200 User License EA7E-890007 1D77F72E 390CDD93 4DCBA022 FAF60790 61AA ...

  7. 201621123040《Java程序设计》第六周学习总结

    1.本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图或相关笔记,对面向对象思想进行一个总结 2.书面作业 2.1clone方法 2.1.1在te ...

  8. iOS开发-OC分支结构

     BOOL类型 返回值:真:YES  假:NO BOOL数据类型占一个字节的内存空间,占位符为%d. 计算机在识别时,YES就替换成1,NO就替换成0. bool是C语言中的布尔类型,返回值为true ...

  9. 自主学习之RxSwift(二) -----flatMap

    最近项目中有这么一个需求,下面是三个网络请求 A.从服务器获取到时间戳(GET 方法,获取 timeLine) B.进行用户头像上传,获得回传的URL(POST方法,参数为 userId, timeL ...

  10. Linux 磁盘和文件管理系统 文件打包解压备份 VIM、VI编辑器