AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle
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的更多相关文章
- AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle【暴力】
AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle 我要崩溃,当时还以为是需要什么离散化的,原来是暴力,特么五层循环....我自己写怎么都 ...
- AtCoder Beginner Contest 075 C bridge【图论求桥】
AtCoder Beginner Contest 075 C bridge 桥就是指图中这样的边,删除它以后整个图不连通.本题就是求桥个数的裸题. dfn[u]指在dfs中搜索到u节点的次序值,low ...
- [日常] AtCoder Beginner Contest 075 翻车实录
别问我为啥要写一篇ABC的游记... 周日打算CF开黑于是就打算先打打ABC找回手速... 进场秒掉 $A$ 和 $B$ , 小暴力一脸偷税 然后开 $C$ ...woc求桥? 怎么办啊我好像突然忘了 ...
- AtCoder Beginner Contest 075 C Bridge(割边)
求割边个数.Tarjan的板子.. #include <bits/stdc++.h> using namespace std; const int MAXN = 55; const int ...
- AtCoder Beginner Contest 100 2018/06/16
A - Happy Birthday! Time limit : 2sec / Memory limit : 1000MB Score: 100 points Problem Statement E8 ...
- AtCoder Beginner Contest 052
没看到Beginner,然后就做啊做,发现A,B太简单了...然后想想做完算了..没想到C卡了一下,然后还是做出来了.D的话瞎想了一下,然后感觉也没问题.假装all kill.2333 AtCoder ...
- AtCoder Beginner Contest 053 ABCD题
A - ABC/ARC Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Smeke has ...
- AtCoder Beginner Contest 136
AtCoder Beginner Contest 136 题目链接 A - +-x 直接取\(max\)即可. Code #include <bits/stdc++.h> using na ...
- AtCoder Beginner Contest 137 F
AtCoder Beginner Contest 137 F 数论鬼题(虽然不算特别数论) 希望你在浏览这篇题解前已经知道了费马小定理 利用用费马小定理构造函数\(g(x)=(x-i)^{P-1}\) ...
随机推荐
- IPFS开发团队是如何工作的?
小编不是一个很八卦的人,连当红明星都认不全.不过,今天还是带领大家来扒一扒ipfs开发团队是如何工作的. 工作方式: 全体会议:每周一有一个全体会议,这个会议是提前安排好的一个日程 任务讨论:把大任务 ...
- Java面试宝典-2017
Java面试宝典2017版 一. Java基础部分........................................................................... ...
- 使用mescroll来实现移动端页面上拉刷新, 下拉加载更多功能
* mescroll请参考官方文档 1. 使用mescroll实现下拉滑动的效果: (仅仅效果, 有的页面不需要刷新数据, 只要你能下拉就行) 代码如下: var mescroll = new MeS ...
- 关于数据库的左,右,内,外连接,Union和Union all---------笔记
1.左连接 select a.filed1,a.filed2,b.filed1 from a (左表) left join b(右表) on a.commonfiled = b.commonfiled ...
- cisco交换机实现端口聚合
0x00前言: 今天听老师讲端口聚合,为了方便日后复习故此有 了本篇随笔. 0x01准备工具: cisco模拟器 0x02:目录 为什么要用端口聚合? 广播风暴? 扩展:SMTP 0x03正文: 为什 ...
- grep -vFf 比较2个文件差异
grep -vFf 1.txt 2.txt 打印出2.txt中与1.txt有差异的数据. #cat .txt 192.168.0.1 192.168.0.2 192.168.0.3 #cat .t ...
- Ubuntu16.0.4下搭建pycharm 2018.3.22
一.首先安装Java jdk Java JDK有两个版本,一个开源版本Openjdk,还有一个Oracle官方版本jdk.下面记录在Ubuntu 16.04上安装Java JDK的步骤. 安装open ...
- 用 Go 编写一个简单的 WebSocket 推送服务
用 Go 编写一个简单的 WebSocket 推送服务 本文中代码可以在 github.com/alfred-zhong/wserver 获取. 背景 最近拿到需求要在网页上展示报警信息.以往报警信息 ...
- JavaScript(第二十六天)【表单处理】
为了分担服务器处理表单的压力,JavaScript提供了一些解决方案,从而大大打破了处处依赖服务器的局面. 一.表单介绍 在HTML中,表单是由<form>元素来表示的,而在JavaS ...
- 论C++的智能指针
一.简介 参考这篇博客,并且根据<C++ Primer>中相关知识,我总结了C++关于智能指针方面的内容. 为了解决内存泄漏的问题,便出现了智能指针.STL提供的智能指针有:aut ...