kickstart2019 round_A B. Parcels
思路:
利用了曼哈顿距离和切比雪夫距离之间的转化。
参考:
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的更多相关文章
- cdh5.15集群添加spark2.3服务(parcels安装)
背景: 机器系统:redhat7.3:已经配置了http服务 集群在安装的时候没有启动spark服务,因为cdh5.15自带的spark不是2.0,所以直接进行spark2.3的安装 参考文档:htt ...
- 【CF480D】Parcels DP
[CF480D]Parcels 题意:有一个栈,有n个物品,每个物品可以选或不选.如果选了第i个物品,则获得$v_i$的收益,且第i个物品必须在$in_i$时刻入栈,$out_i$时刻出栈.每个物品还 ...
- Cloudera Manager安装之利用parcels方式安装3或4节点集群(包含最新稳定版本或指定版本的安装)(添加服务)(CentOS6.5)(五)
参考博客 Cloudera Manager安装之利用parcels方式安装单节点集群 Cloudera Manager安装之Cloudera Manager 5.3.X安装(三)(tar方式.rpm ...
- Cloudera Manager安装之利用parcels方式安装单节点集群(包含最新稳定版本或指定版本的安装)(添加服务)(CentOS6.5)(四)
不多说,直接上干货! 福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号: 大数据躺过的坑 Java从入门到架构师 人工智能躺过的坑 ...
- Cloudera Manager安装之利用parcels方式(在线或离线)安装3或4节点集群(包含最新稳定版本或指定版本的安装)(添加服务)(Ubuntu14.04)(五)
前期博客 Cloudera Manager安装之Cloudera Manager 5.6.X安装(tar方式.rpm方式和yum方式) (Ubuntu14.04) (三) 如果大家,在启动的时候,比如 ...
- Kudu安装(官网推荐的步骤)(installing Kudu using parcels or packages)
不多说,直接上干货! Kudu安装前的建议说明(博主推荐) Kudu官网推荐的步骤: 本篇博文是installing Kudu using parcels or packages的方式. http:/ ...
- #2 codeforces 480 Parcels
题意: 就是有一个用来堆放货物的板,承重力为S.现在有N件货物,每件货物有到达的时间,运走的时间,以及重量,承重,存放盈利.如果这件货物能再运达时间存放,并在指定时间取走的话,就能获得相应的盈利值.货 ...
- CDH-5.7.0:基于Parcels方式离线安装配置
http://shiyanjun.cn/archives/1728.html https://www.waitig.com/cdh%E5%AE%89%E8%A3%85.html
- kickstart2019 round_C B. Circuit Board
思路: 这题应该不止一种解法,其中的一种可以看作是leetcode85https://www.cnblogs.com/wangyiming/p/11059176.html的加强版: 首先对于每一行,分 ...
随机推荐
- SpringBoot02 Controller的使用、数据库操作、事物管理、修改banner
1 Controller的使用 特点:编程技巧和SpringMVC几乎完全一样 注意:@RestController = @Controller + @ResponseBody 注意:读取路径参数和请 ...
- 36、EST-SSR标记开发
转载:http://fhqdddddd.blog.163.com/blog/static/1869915420124131096557/ MISA工具提供批量识别和定位简单重复序列(SSR),EST序 ...
- 《精通Spring4.X企业应用开发实战》读后感第五章(不同配置方式比较)
- Struts2 资源配置文件国际化
Struts2 资源配置文件国际化 Struts2资源文件的命名规范:basename_language_country.properties Struts2国际化如果系统同时存在资源文件.类文件,系 ...
- Http客户端再封装
Android系统上推荐的Http客户端从Apache变成[HttpURLConnection],主要理由包括 * 不过因为UrlConnection这组接口时间较早(Java 1.0), 接口的设计 ...
- 图像的读取,显示与保存(基于skimage模块)
一 skiamge模块 skimage包的全称是scikit-image SciKit (toolkit for SciPy) ,它对scipy.ndimage进行了扩展,提供了更多的图片处理功能.它 ...
- [Windows]获取系统版本号
1 string GetMainProgInfo() 2 { 3 string strRet; 4 TCHAR szPath[MAX_PATH]; 5 GetModuleFileName(NULL,s ...
- KONG -- 配置 service 并添加 key-auth
默认情况下, KONG 监听下面几个端口: 8000 这个端口用于监听客户端的 HTTP 请求,并转发给上游服务 8443 这个端口用于监听客户端的 HTTPS 请求,并转发给上游服务 800 ...
- 老男孩Day1作业(一):编写登录接口
需求:编写登陆接口1. 用户输入帐号密码进行登陆2. 用户信息保存在文件内3. 用户密码输入错误三次后锁定用户 1)编写思路 编写思路参考下面GitHub链接中的流程图 https://github. ...
- Intervals POJ - 1201 差分约束
You are given n closed, integer intervals [ai, bi] and n integers c1, ..., cn. Write a program that: ...