Acwing-121-赶牛入圈(二分, 二维前缀和,离散化)
链接:
https://www.acwing.com/problem/content/123/
题意:
农夫约翰希望为他的奶牛们建立一个畜栏。
这些挑剔的畜生要求畜栏必须是正方形的,而且至少要包含C单位的三叶草,来当做它们的下午茶。
畜栏的边缘必须与X,Y轴平行。
约翰的土地里一共包含N单位的三叶草,每单位三叶草位于一个1 x 1的土地区域内,区域位置由其左下角坐标表示,并且区域左下角的X,Y坐标都为整数,范围在1到10000以内。
多个单位的三叶草可能会位于同一个1 x 1的区域内,因为这个原因,在接下来的输入中,同一个区域坐标可能出现多次。
只有一个区域完全位于修好的畜栏之中,才认为这个区域内的三叶草在畜栏之中。
请你帮约翰计算一下,能包含至少C单位面积三叶草的情况下,畜栏的最小边长是多少。
思路:
离散化之后搞一下二维前缀和.再查询就可以降到500^2*log(1000)左右.
代码:
#include <bits/stdc++.h>
using namespace std;
struct Node
{
int x, y;
int node;
}node[510];
int Map[10000][10000];
int Number[2010];
int c, n, pos;
bool Check(int len)
{
for (int x1 = 1, x2 = 1;x2 <= pos;x2++)
{
while (Number[x2]-Number[x1]+1 > len)
x1++;
for (int y1 = 1, y2 = 1;y2 <= pos;y2++)
{
while (Number[y2]-Number[y1]+1 > len)
y1++;
if (Map[x2][y2]-Map[x2][y1-1]-Map[x1-1][y2]+Map[x1-1][y1-1] >= c)
return true;
}
}
return false;
}
int main()
{
scanf("%d %d", &c, &n);
int x, y;
pos = 0;
for (int i = 1;i <= n;i++)
{
scanf("%d%d", &node[i].x, &node[i].y);
Number[++pos] = node[i].x;
Number[++pos] = node[i].y;
}
sort(Number+1, Number+1+2*n);
pos = unique(Number+1, Number+1+2*n)-(Number+1);
for (int i = 1;i <= n;i++)
{
node[i].x = lower_bound(Number+1, Number+1+pos, node[i].x)-Number;
node[i].y = lower_bound(Number+1, Number+1+pos, node[i].y)-Number;
Map[node[i].x][node[i].y]++;
}
for (int i = 1;i <= pos;i++)
{
for (int j = 1;j <= pos;j++)
Map[i][j] = Map[i][j]+Map[i-1][j]+Map[i][j-1]-Map[i-1][j-1];
}
int l = 1, r = 10000;
int res = 10000;
while (l < r)
{
// cout << l << ' ' << r << endl;
int mid = (l+r)/2;
if (Check(mid))
{
r = mid;
}
else
l = mid+1;
}
// cout << r << endl;
printf("%d\n", r);
return 0;
}
/*
9 9
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
1000 1000
*/
Acwing-121-赶牛入圈(二分, 二维前缀和,离散化)的更多相关文章
- poj_3179 Corral the Cows (二分+二维前缀和+离散化)
[题目链接] http://poj.org/problem?id=3179 [参考] http://www.cnblogs.com/evenbao/p/9243183.html [算法] 二分答案+判 ...
- Gym 102091L Largest Allowed Area 【二分+二维前缀和】
<题目链接> 题目大意:给你一个由01组成的矩形,现在问你,该矩形中,最多只含一个1的正方形的边长最长是多少. 解题分析: 用二维前缀和维护一下矩形的01值,便于后面直接$O(1)$查询任 ...
- cf1073c 二分+二维前缀和
#include<bits/stdc++.h> using namespace std; #define maxn 200005 char s[maxn]; ][maxn]; map< ...
- [BZOJ2738]矩阵乘法(整体二分+二维树状数组)
整体二分+二维树状数组. 好题啊!写了一个来小时. 一看这道题,主席树不会搞,只能用离线的做法了. 整体二分真是个好东西,啥都可以搞,尤其是区间第 \(k\) 大这种东西. 我们二分答案,然后用二维树 ...
- 【bzoj2738】矩阵乘法 整体二分+二维树状数组
题目描述 给你一个N*N的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第K小数. 输入 第一行两个数N,Q,表示矩阵大小和询问组数:接下来N行N列一共N*N个数,表示这个矩阵:再接下来Q行每行5个数 ...
- Codeforces 1262E Arson In Berland Forest(二维前缀和+二维差分+二分)
题意是需要求最大的扩散时间,最后输出的是一开始的火源点,那么我们比较容易想到的是二分找最大值,但是我们在这满足这样的点的时候可以发现,在当前扩散时间k下,以这个点为中心的(2k+1)2的正方形块内必 ...
- [CSP-S模拟测试]:physics(二维前缀和+二分+剪枝)
题目传送门(内部题26) 输入格式 第一行有$3$个整数$n,m,q$.然后有$n$行,每行有一个长度为$m$的字符串,$+$表示正电粒子,$-$表示负电粒子.然后有$q$行,每行$2$个整数$x,y ...
- C - Monitor CodeForces - 846D (二维前缀和 + 二分)
Recently Luba bought a monitor. Monitor is a rectangular matrix of size n × m. But then she started ...
- 【AcWing 99】激光炸弹——二维前缀和
(题面来自AcWing) 一种新型的激光炸弹,可以摧毁一个边长为 R 的正方形内的所有的目标. 现在地图上有 N 个目标,用整数Xi,Yi表示目标在地图上的位置,每个目标都有一个价值Wi. 激光炸弹的 ...
随机推荐
- WCF客户端代理
创建类库WCFServiceProxy 添加System.ServiceModel.WCFService(见上篇文章)引用 创建类:BookServiceClient using System; us ...
- 【3.2】【mysql基本实验】mysql GTID复制(基于空数据的配置)
概述:本质上和传统异步复制没什么区别,就是加了GTID参数. 且可以用传统的方式来配置主从,也可以用GTID的方式来自动配置主从. 这里使用GTID的方式来自动适配主从. 需要mysql5.6.5以上 ...
- PostgreSQL查看等待锁的SQL和进程
查看等待锁的查询和进程: The following query may be helpful to see what processes are blocking SQL statements (t ...
- 浅谈Linux cp命令
Linux 的cp命令 功能: 复制文件或目录说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中.若 ...
- Postman之获得登录的token,并设置为全局变量
1.调通登录接口(可以参考上篇博客) 网址:Postman之简单使用 2.粘贴以下代码到Tests中 //把json字符串转化为对象 var data=JSON.parse(responseBody) ...
- Redis安全策略
1. 开启redis密码认证,并设置高复杂度密码 描述 redis在redis.conf配置文件中,设置配置项requirepass, 开户密码认证. redis因查询效率高,auth这种命令每秒能处 ...
- 记Tomcat进程stop卡住问题定位处理
部分内容参考自CSDN 测试环境通过agent注入了部分代码,其中包括几个Timer. 在通过启动脚本重启tomcat时,会一直有一个stop进程卡住,导致tomcat无法正常重启,进程卡住不动. 通 ...
- 一头扎进 JAVA
硅不可 吉米 JAVA 基础 -- 基础不牢,地动山摇 子类应该比 父类更为 开放 (public protected default private) 子类方法不能比父类抛出更高异常( 可以为父类方 ...
- 无线传输模块HC-12
无线传输模块HC-12使用 因为实验室的无人机需要使用一款无线传输模块进行遥控控制,我们讨论的中测试了HC-12,并对HC-12传输距离进行了简单测试.在此做下使用记录. 模块概述 HC-12 无线串 ...
- Elasticsearch中文文档,内容不全
注意 内容不全,这是观看中文文档进行操作的 文档地址 旧版中文文档,部分内容过期 https://www.elastic.co/guide/cn/elasticsearch/guide/current ...