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}\) ...
随机推荐
- Java设计模式(二)抽象工厂模式
一.场景描述 接<Java设计模式(一)工厂模式>https://www.cnblogs.com/mahongbiao/p/8618970.html 工厂模式有一缺点,就是破坏了类的封闭性 ...
- 新装的Linux服务系统安装MySQL
目的描述:全新的腾讯云Linux服务器,系统是ubuntu 16.04.需要在上面安装mysql数据库. 使用XShell远程登录,在终端窗口中使用sudo apt-get 指令在线安装mysql. ...
- async generator promise异步方案实际运用
es7 async方案 /******************async***********************/ var timeFn=function(time){ return new P ...
- 转:命令passwd报错因inode节点处理记录
命令passwd报错因inode节点处理记录 原文:http://blog.sina.com.cn/s/blog_506ed9e6010106kj.html 故障现象: 1.修改密码时报错 ...
- 为什么TCP的ISN是随机的?
两个维度: 1)攻击维度 如果TCP每次连接都使用固定ISN,黑客可以很方便模拟任何IP与server建立连接. 问题:通过抓包就可以计算出来TCP连接的ISN,那固定于不固定ISN有什么区别呢? 答 ...
- 1-1 struts2 基本配置 struts.xml配置文件详解
详见http://www.cnblogs.com/dooor/p/5323716.html 一. struts2工作原理(网友总结,千遍一律) 1 客户端初始化一个指向Servlet容器(例如Tomc ...
- 1-4 criteria用法大全
Criteria的完整用法 QBE (Query By Example) Criteria cri = session.createCriteria(Student.class); cri.add(E ...
- FxCop卸载后依然生成文件夹的问题
在 http://www.cnblogs.com/heroius/p/8270004.html 中,通过编辑csproj文件可以移除对旧版nuget独立程序的依赖. 实际上,通过编辑项目文件的方式可以 ...
- 安装VMware workstation遇到的两个问题:安装过程中的DLL问题和安装后打开需要的管理权限问题
1.安装过程中遇到Microsoft runtime DLL安装程序未能完成安装的问题? 在遇到这个问题时不要点击确定,需要在开始菜单中输入%temp%,然后跳转到一个文件夹里,找到后缀为setup的 ...
- 【Python】 高级文件操作 shutil
shutil 很多时候,我想要对文件进行重命名,删除,创建等操作的时候的想法就是用subprocess开一个子进程来处理,但是实际上shutil可以更加方便地提供os的文件操作接口,从而可以一条语句搞 ...