2 0 2 0 年 第 十 一 届 蓝 桥 杯 - 国赛 - C&C++大学B组 - B.扩散

Posted _Alex_007

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2 0 2 0 年 第 十 一 届 蓝 桥 杯 - 国赛 - C&C++大学B组 - B.扩散相关的知识,希望对你有一定的参考价值。

Ideas

一开始想的是以四个点为圆心,画一个半径为2020的圆,所有在四个圆之内的点都是黑色的。

用的是两点之间距离公式,也叫欧几里得距离: ∣ A B ∣ = ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 |AB|=\\sqrt(x_1-x_2)^2+(y_1-y_2)^2 AB=(x1x2)2+(y1y2)2

但实际上并不能这么计算,因为欧氏距离表示的两点之间的直线距离,而题目中的扩散并不是直线传播的,而是折线传播的,也就是应该用曼哈顿距离公式。

Code

Python

if __name__ == '__main__':
    ans = 0
    for x in range(-2100, 4100):
        for y in range(-2100, 4100):
            if abs(x - 0) + abs(y - 0) < 2021 or \\
                    abs(x - 2020) + abs(y - 11) < 2021 or \\
                    abs(x - 11) + abs(y - 14) < 2021 or \\
                    abs(x - 2000) + abs(y - 2000) < 2021:
                ans += 1
    print(f"ans = ans")

以上是关于2 0 2 0 年 第 十 一 届 蓝 桥 杯 - 国赛 - C&C++大学B组 - B.扩散的主要内容,如果未能解决你的问题,请参考以下文章

2 0 2 0 年 第 十 一 届 蓝 桥 杯 - 国赛 - C&C++大学B组 - A.美丽的2

2 0 2 0 年 第 十 一 届 蓝 桥 杯 - 国赛 - C&C++大学B组 - B.扩散

2 0 2 0 年 第 十 一 届 蓝 桥 杯 - 省赛 - C&C++大学C组 - A.约数个数

2 0 2 0 年 第 十 一 届 蓝 桥 杯 - 省赛 - C&C++大学A组 - B.既约分数

2019年第十届蓝桥杯组队题目第一题

十二届蓝桥杯Scratch国赛试题