前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Codeforces 965B 题解报告

Codeforces 965B 题解报告

作者头像
海天一树
发布2018-07-25 14:14:45
2380
发布2018-07-25 14:14:45
举报
文章被收录于专栏:海天一树海天一树

一、题目

http://codeforces.com/contest/965/problem/B

二、分析

当k = 1时,取第一个’.’的坐标即可 当k > 1时,需要求出每一个点在上下左右四个方向所能到达的最远处,记为up, down, left, right,再取上下方向和左右方向的和的最大值,即 max(0, up + down - k) + max(0, left + right - k)

三、程序

代码语言:javascript
复制
n, k = map(int, input().split())
a = []
for i in range(n):
    a.append(input())
maxans = 0
xans = 0
yans = 0
for i in range(n):
    for j in range(n):
        curans = 0
        up = 0
        while up < k and i - up >= 0 and a[i - up][j] == '.':
            up += 1
        down = 0
        while down < k and i + down < n and a[i + down][j] == '.':
            down += 1
        curans += max(0, down + up - k)
        if k != 1:
            left = 0
            while left < k and j - left >= 0 and a[i][j - left] == '.':
                left += 1
            right = 0
            while right < k and j + right < n and a[i][j + right] == '.':
                right += 1
            curans += max(0, right + left - k)
        if curans > maxans:
            maxans = curans
            xans = i
            yans = j
print(xans + 1, yans + 1)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 海天一树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、题目
  • 二、分析
  • 三、程序
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档