CCF-201912-2-回收站选址

有n处垃圾,在这n处建回收厂,且上下左右都有垃圾才能被选上。
为选上的地点评分,4个斜角,一个斜角有垃圾加一分。一共5种分值:0,1,2,3,4。最后得到一个分值,对应分值的个数加一,最后输出每个分值各有多少个选址。

2种方向:dires1 - 上下左右;dires2 - 4个斜角
2个评分:s1 - 上下左右的垃圾个数,4分才能被选;s2 - 4个斜角

流程:
遍历每个地点,评分s1,能选作回收站的接着评分s2。

python代码:

n = int(input())
points, cnts = [], [0, 0, 0, 0, 0]
dires1 = [[0, 1], [1, 0], [-1, 0], [0, -1]]
dires2 = [[-1, -1], [1, 1], [-1, 1], [1, -1]]
for i in range(n):
    x, y = map(int, input().split())
    points.append([x, y])
for x, y in points:
    s1, s2 = 0, 0
    for dx, dy in dires1:
        nx, ny = x + dx, y + dy
        if [nx, ny] in points:
            s1 += 1
    if s1 == 4:
        for dx, dy in dires2:
            nx, ny = x + dx, y + dy
            if [nx, ny] in points:
                s2 += 1
        cnts[s2] += 1
for cnt in cnts:
    print(cnt)

# 7
# 1 2
# 2 1
# 0 0
# 1 1
# 1 0
# 2 0
# 0 1

# 2
# 0 0
# -10000 10

# 11
# 9 10
# 10 10
# 11 10
# 12 10
# 13 10
# 11 9
# 11 8
# 12 9
# 10 9
# 10 11
# 12 11
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值