您当前的位置: 首页 >  c++

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

发布时间:2021-12-28 23:43:31 ,浏览量:0

在这里插入图片描述

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∣=(x1−x2)2+(y1−y2)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}") 
关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    108697博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.4276s