统计
  • 建站日期:2019-12-01
  • 文章总数:2331 篇
  • 评论总数:2160 条
  • 分类总数:22 个
  • 最后更新:4月1日
文章 未分类

Java 蓝桥杯 国赛 第十一届 C组 试题C: 扩散

程序员阿鑫
首页 未分类 正文


Java蓝桥杯国赛第十一届C组试题C:扩散
-程序员阿鑫-带你一起秃头
-第1
张图片

Java蓝桥杯国赛第十一届C组试题C:扩散 -程序员阿鑫-带你一起秃头 -第1 张图片

#C 扩散

本题总分:10 分


问题描述

小蓝在一张无限大的特殊画布上作画。
这张画布可以看成一个方格图,每个格子可以用一个二维的整数坐标表示。
小蓝在画布上首先点了一下几个点:(0 000 00),(2020 2020202011 1111),(11 111114 1414),(2000 200020002000 20002000)。只有这几个格子上有黑色,其它位置都是白色的。
每过一分钟,黑色就会扩散一点。具体的,如果一个格子里面是黑色,它就会扩散到上、下、左、右四个相邻的格子中,使得这四个格子也变成黑色(如果原来就是黑色,则还是黑色)。
请问,经过 2020 20202020 分钟后,画布上有多少个格子是黑色的。


答案提交

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。


11157392 || 20312088

calcCode:

  1. public class Test {
  2. static final int n = 2020;
  3. public static void main(String[] args) {
  4. int[][] resource = { {0, 0}, {2020, 11}, {11, 14}, {2000, 2000} };
  5. boolean[][] marked = new boolean[n << 1 | 1][n << 1 | 1];
  6. long res = 0;
  7. for (int k = 0, x, y; k < 4; k++) {
  8. x = resource[k][0];
  9. y = resource[k][1];
  10. for (int i = -n; i <= n; i++) {
  11. if (x + i < 0) continue;
  12. for (int r = n - abs(i), j = -r; j <= r; j++) {
  13. if (x + i < 0 || y + j < 0 || marked[x + i][y + j]) continue;
  14. marked[x + i][y + j] = true;
  15. res++;
  16. }
  17. }
  18. }
  19. System.out.println(res);
  20. }
  21. static int abs(int n) { return n > 0 ? n : -n; }
  22. }

    反正比赛的时候我填的是这个结果
    但还有人说这里的扩散可以扩散到负坐标,防杠还是写出来吧

    1. public class Test {
    2. static final int n = 2020;
    3. public static void main(String[] args) {
    4. int[][] resource = { {0, 0}, {2020, 11}, {11, 14}, {2000, 2000} };
    5. boolean[][] marked = new boolean[n << 2][n << 2];
    6. long res = 0;
    7. for (int k = 0, x, y; k < 4; k++) {
    8. x = resource[k][0] + n;
    9. y = resource[k][1] + n;
    10. for (int i = -n; i <= n; i++)
    11. for (int r = n - abs(i), j = -r; j <= r; j++) {
    12. if (marked[x + i][y + j]) continue;
    13. marked[x + i][y + j] = true;
    14. res++;
    15. }
    16. }
    17. System.out.println(res);
    18. }
    19. static int abs(int n) { return n > 0 ? n : -n; }
    20. }

    以上是《Java 蓝桥杯 国赛 第十一届 C组 试题A:美丽的 2》的全部内容,

    感谢您对程序员阿鑫博客的支持!

    版权说明
    文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。
    版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!

    -- 展开阅读全文 --
    这篇文章最后更新于2020-12-28,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
    Java 蓝桥杯 国赛 第十一届 C组 试题D:阶乘约数
    « 上一篇
    Java 蓝桥杯 国赛 第十一届 C组 试题B:合数个数
    下一篇 »

    发表评论

    • 泡泡
    • 阿呆
    • 阿鲁


    扫一扫,支付10
    支付完成后,请等待5秒左右。手机请点此支付!