思路:

利用了曼哈顿距离和切比雪夫距离之间的转化。

参考:

https://blog.csdn.net/Dylan_Frank/article/details/88985444

https://www.cnblogs.com/SGCollin/p/9636955.html

以后如果再遇到需要先计算大量曼哈顿距离然后再计算这些曼哈顿距离中的最大值的时候,就要考虑下是否可以转化为切比雪夫距离来优化了。

实现:

 #include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> pii;
const int N = ;
const int INF = 0x3f3f3f3f;
const int dx[] = {, , , -};
const int dy[] = {, , -, };
char a[N][N];
int dis[N][N], vis[N][N];
bool check(int k, int r, int c)
{
memset(dis, , sizeof dis);
memset(vis, , sizeof vis);
queue<pii> q;
for (int i = ; i < r; i++)
{
for (int j = ; j < c; j++)
{
if (a[i][j] == '')
{
q.push(pii(i, j));
vis[i][j] = ;
dis[i][j] = ;
}
}
}
int maxn = ;
while (!q.empty())
{
pii tmp = q.front(); q.pop();
for (int i = ; i < ; i++)
{
int nx = tmp.first + dx[i], ny = tmp.second + dy[i];
if (nx >= && nx < r && ny >= && ny < c && !vis[nx][ny])
{
vis[nx][ny] = ;
q.push(pii(nx, ny));
dis[nx][ny] = dis[tmp.first][tmp.second] + ;
maxn = max(maxn, dis[nx][ny]);
}
}
}
if (maxn <= k) return true;
int maxx = -INF, maxy = -INF, minx = INF, miny = INF;
for (int i = ; i < r; i++)
{
for (int j = ; j < c; j++)
{
if (dis[i][j] > k)
{
maxx = max(maxx, i + j);
minx = min(minx, i + j);
maxy = max(maxy, i - j);
miny = min(miny, i - j);
}
}
}
int ans = maxn;
for (int i = ; i < r; i++)
{
for (int j = ; j < c; j++)
{
if (a[i][j] == '') continue;
int tx = i + j, ty = i - j, maxd = -INF;
maxd = max(maxd, abs(maxx - tx));
maxd = max(maxd, abs(minx - tx));
maxd = max(maxd, abs(maxy - ty));
maxd = max(maxd, abs(miny - ty));
ans = min(ans, maxd);
}
}
return ans <= k;
}
int main()
{
int T, r, c;
cin >> T;
for (int t = ; t <= T; t++)
{
cin >> r >> c;
for (int i = ; i < r; i++)
for (int j = ; j < c; j++)
cin >> a[i][j];
int L = , R = r + c, ans = INF;
while (L <= R)
{
int m = L + R >> ;
if (check(m, r, c))
{
R = m - ;
ans = m;
}
else L = m + ;
}
cout << "Case #" << t << ": " << ans << endl;
}
return ;
}

kickstart2019 round_A B. Parcels的更多相关文章

  1. cdh5.15集群添加spark2.3服务(parcels安装)

    背景: 机器系统:redhat7.3:已经配置了http服务 集群在安装的时候没有启动spark服务,因为cdh5.15自带的spark不是2.0,所以直接进行spark2.3的安装 参考文档:htt ...

  2. 【CF480D】Parcels DP

    [CF480D]Parcels 题意:有一个栈,有n个物品,每个物品可以选或不选.如果选了第i个物品,则获得$v_i$的收益,且第i个物品必须在$in_i$时刻入栈,$out_i$时刻出栈.每个物品还 ...

  3. Cloudera Manager安装之利用parcels方式安装3或4节点集群(包含最新稳定版本或指定版本的安装)(添加服务)(CentOS6.5)(五)

    参考博客 Cloudera Manager安装之利用parcels方式安装单节点集群  Cloudera Manager安装之Cloudera Manager 5.3.X安装(三)(tar方式.rpm ...

  4. Cloudera Manager安装之利用parcels方式安装单节点集群(包含最新稳定版本或指定版本的安装)(添加服务)(CentOS6.5)(四)

    不多说,直接上干货! 福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号:   大数据躺过的坑      Java从入门到架构师      人工智能躺过的坑          ...

  5. Cloudera Manager安装之利用parcels方式(在线或离线)安装3或4节点集群(包含最新稳定版本或指定版本的安装)(添加服务)(Ubuntu14.04)(五)

    前期博客 Cloudera Manager安装之Cloudera Manager 5.6.X安装(tar方式.rpm方式和yum方式) (Ubuntu14.04) (三) 如果大家,在启动的时候,比如 ...

  6. Kudu安装(官网推荐的步骤)(installing Kudu using parcels or packages)

    不多说,直接上干货! Kudu安装前的建议说明(博主推荐) Kudu官网推荐的步骤: 本篇博文是installing Kudu using parcels or packages的方式. http:/ ...

  7. #2 codeforces 480 Parcels

    题意: 就是有一个用来堆放货物的板,承重力为S.现在有N件货物,每件货物有到达的时间,运走的时间,以及重量,承重,存放盈利.如果这件货物能再运达时间存放,并在指定时间取走的话,就能获得相应的盈利值.货 ...

  8. CDH-5.7.0:基于Parcels方式离线安装配置

    http://shiyanjun.cn/archives/1728.html https://www.waitig.com/cdh%E5%AE%89%E8%A3%85.html

  9. kickstart2019 round_C B. Circuit Board

    思路: 这题应该不止一种解法,其中的一种可以看作是leetcode85https://www.cnblogs.com/wangyiming/p/11059176.html的加强版: 首先对于每一行,分 ...

随机推荐

  1. MySql集合查询

    SELECT语句的查询结果是元组的集合,所以多个SELECT语句的结果可进行集合操作. 集合操作主要包括并操作UNION.交操作INTERSECT.差操作EXCEPT. 注意,参加集合操作的各查询结果 ...

  2. 面试题: mysql数据库 已看1 简单的sql练习

    数据库总结--MySQL常见面试题 2015年03月24日 17:56:06 阅读数:7787 1.根据部门号从高到低,工资从低到高列出员工的信息 select * from employee ord ...

  3. p1919 A*B Problem升级版

    传送门 题目 给出两个n位10进制整数x和y,你需要计算x*y. 输入格式: 第一行一个正整数n. 第二行描述一个位数为n的正整数x. 第三行描述一个位数为n的正整数y. 输出格式: 输出一行,即x* ...

  4. App集成极光推送开发流程[关键步骤]

    1.客户端集成SDK 1.1初始化 JPushInterface.setDebugMode(true); // 设置开启日志,发布时请关闭日志 JPushInterface.init(this); / ...

  5. C#将PDF转换为图片的方法

    1.需要添加引用  O2S.Components.PDFRender4NET 链接: https://pan.baidu.com/s/1ZPTaLTnFkex6QrsndLjwxg 提取码: jdh2 ...

  6. Flask从入门到做出一个博客的大型教程(一)

    本项目全部在虚拟环境中运行,因此请参照前面的文章,链接为https://blog.csdn.net/u014793102/article/details/80302975 建立虚拟环境后,再接着完成本 ...

  7. nfs使用教程

    服务端 配置说明 文件名 /etc/exports 格式 <输出目录> [客户端 (访问权限,用户映射,其他) ] [客户端 (访问权限,用户映射,其他) ] 格式说明 输出目录:NFS系 ...

  8. 【转至hejinde的专栏】Axure RP 8最新激活码(可用注册码)

    Licensee:米 业成 (STUDENT)Key:nFmqBBvEqdvbiUjy8NZiyWiRSg3yO+PtZ8c9wdwxWse4WprphvSu9sohAdpNnJK5 亲测可用

  9. 洛谷P1607 [USACO09FEB]庙会班车Fair Shuttle

    P1607 [USACO09FEB]庙会班车Fair Shuttle 题目描述 Although Farmer John has no problems walking around the fair ...

  10. ansible编译安装--操作系统环境Redhat6.4

    安装前安装包准备,下载链接如下: Python2.7下载地址:https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz ansible下载地 ...