【2025刷题笔记】- 反射计数

刷题笔记合集🔗

反射计数

问题描述

给定一个包含 0 和 1 的二维矩阵。

给定一个初始位置和速度,一个物体从给定的初始位置出发,在给定的速度下进行移动,遇到矩阵的边缘则发生镜面反射。

无论物体经过 0 还是 1,都不影响其速度。

请计算并给出经过 时间单位后,物体经过 1 点的次数。

矩阵以左上角位置为 (列(),行()),例如下面 A 点坐标为 (第二列,第一行)

注意:

  1. 如果初始位置的点是 1,也计算在内
  2. 时间的最小单位为 1,不考虑小于 1 个时间单位内经过的点

输入格式

第一行为初始信息,包含七个整数 ,分别表示:

  • 为矩阵的宽和高
  • 为起始位置
  • 为初始速度
  • 为经过的时间

第二行开始一共 行,为二维矩阵信息,每行包含 个字符,只有 0 和 1。

输出格式

输出一个整数,表示经过 1 的个数。

注意初始位置也要计算在内。

样例输入

12 7 2 1 1 -1 13
001000010000
001000010000
001000010000
001000010000
001000010000
001000010000
001000010000

样例输出

3

数据范围

样例 解释说明
样例1 初始位置为(2,1),速度为(1,-1),那么13个时间单位后,经过点1的个数为3

题解

这道题目模拟了一个物体在二维矩阵中移动的过程,要求统计它经过值为1的格子的次数。

主要难点在于处理边界反射的逻辑。当物体到达矩阵边界时,需要按照镜面反射的规则改变其速度方向并计算新的位置。

解题思路:

  1. 首先解析输入,获取矩阵尺寸、初始位置、初始速度和时间。
  2. 然后,模拟物体在t个时间单位内的移动过程:
    • 从初始位置开始,检查该位置的值是否为1
    • 根据当前速度计算下一个位置
    • 检查是否碰到边界,如果是,应用反射规则并调整速度
    • 移动到新位置,时间减一
    • 重复上述过程直到时间结束

关于边界反射的处理:

  • 当x < 0时,x应该变为1,sx变为-sx(向左碰到边界后向右反弹)
  • 当x >= w时,x应该变为w-2,sx变为-sx(向右碰到边界后向左反弹)
  • 当y < 0时,y应该变为1,sy变为-sy(向上碰到边界后向下反弹)
  • 当y >= h时,y应该变为h-2,sy变为-sy(向下碰到边界后向上反弹)

需要注意的是,本题中(x,y)坐标表示矩阵中的列和行,而不是常规的坐标系。

时间复杂度为O(t),其中t是给定的时间单位。空间复杂度为O(w*h),用于存储矩阵。对于给定的数据范围(w,h<100, t<100),这个算法可以高效地解决问题。

参考代码

  • Python
import sys
input = lambda:sys.stdin.readline().strip()

# 读取输入第一行的参数
w, h, x, y, sx, sy, t = map(int, input().split())

# 读取矩阵
matrix = []
for _ in range(h):
    matrix.append(input())

# 统计经过1的次数
count = 0

# 模拟移动过程
while t >= 0:
    # 检查当前位置是否为1
    if matrix[y][x] == '1':
        count += 1
    
    # 移动到下一个位置
    x += sx
    y += sy
    
    # 处理边界反射
    if x < 0:
        x = 1
        sx = -sx
    elif x >= w:
        x = w - 2
        sx = -sx
    
    if y < 0:
        y = 1
        sy = -sy
    elif y >= h:
        y = h - 2
        sy = -s

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

算法刷题笔记 文章被收录于专栏

本专栏收集并整理了一些刷题笔记

全部评论

相关推荐

工作职责&nbsp;我们需要更全面地理解玩家,也需要贴心地服务玩家。AI将是这个时代的催化剂。你将运用AI工具与工业化思维,与研发协同作战。你将有机会在实习期独立负责重要模块工作,基于你对游戏的深刻理解,在专业导师的指导下,亲手完成从&quot;灵感&quot;到&quot;落地&quot;的完整闭环。从一站式解决玩家游戏问题的AI助手,到深入访谈收集玩家意见的智能体,再到基于全球海量玩家舆情与数据的智能分析Agent;从稳定高效的自动化配置与校验Agent,到智能分析线上问题、定位解决方案……你会拥有充足的AI资源,在广大的舞台上探索这些可能性。最终实现对产品内容进行调优,保障版本质量,为玩家提供高品质且稳定的游戏体验;与此同时,基于反馈监控和数据分析,为项目的长线规划和决策提供基石。我们将依据每位实习生的投递志愿与能力画像,邀请你进入以下岗位。1.&nbsp;产品运营&amp;活动运营你将成为和研发团队并肩作战的“内容共创者”,创造超出预期的游戏内容。为此,你将通过AI技术系统性提升产品认知,并构建高效的玩家反馈收集与分析体系。你将与团队共同打造并运用各类Agent,使其能协助完成从访谈测试、问卷调研、反馈清洗,再到多元数据融合分析、报告生成,乃至内容效果预判等一系列工作,实现从研发期到上线后全周期的智能洞察与决策支持。在此基础上,你还将协同制定线上运营的版本内容节奏,设计活动,提炼版本卖点并深度参与宣发,规划福利,提升活跃,达成商业化预期,支撑游戏的长线运营目标。2.&nbsp;版本运营你将致力于保障千万玩家的稳定游戏体验,以“零事故”为核心目标。你需要与研发团队并肩配合,搭建高效可靠的全球化配置发布平台。你将利用AI与自动化技术,识别解决各类潜在风险,快速发现并处理异常问题。从早期测试组织到全球发行上线,你将通过周密的统筹规划,让复杂的版本发布计划井然有序,构建高效可靠的质量保障流程,确保每一次版本更新都能平稳、安全地落地。我们的愿景是实现自我驱动、自我迭代的智能化运营功能体系,坚实守卫千万玩家的稳定流畅游戏体验。3.&nbsp;玩家运营你将成为连接玩家与研发的“可靠桥梁”。洞察社区舆情,捕捉玩家诉求,借助AI分析为项目决策提供依据;规划宣传节奏,创作宣发物料,引导玩家迅速获取重点信息;营造社区氛围,激发二次创作,培育出更多优秀的共创作者;挖掘玩家所需,运用AI打造辅助工具,为用户提供个性化服务与更便利的定制体验。4.&nbsp;数据运营你将成为项目组敏锐的“决策智囊”。通过挖掘海量的游戏内外数据,全方位了解玩家用户特征、行为偏好、观点态度、讨论趋势,洞悉玩家的偏好与需求,构建对用户画像的认知。你将发挥你在数据处理、逻辑分析和AI应用上的能力,搭建完整的监测和分析体系,为游戏设计、发行和运营策略提供科学客观的决策依据,助力打造更佳的游戏体验。投递本岗,你有机会获得:-转正“绿灯”:实习期间表现优秀的同学,将直接锁定正式校招Offer。-面试“交流”:面试非传统单向考核,专业通道导师将提供1v1指导和解惑,助力提升运营能力!任职要求1.游戏“头号玩家”:你是忠实的游戏玩家,对米哈游或其他游戏有深度的体验经历(请在简历中附带详细游戏经历)。你对游戏行业充满热情,既能从项目研发的整体视角分析问题,又能敏感捕捉玩家视角的体验,并将二者有效结合。2.AI应用能力:你会利用公司提供的AI资源融入到工作的各业务场景。AI于你不仅是单一工具,而是作为“第二大脑”辅助你日常工作的方方面面。你也会与时俱进地更新对AI技术和应用发展的认知,拓宽运营对于玩家服务和玩家爱好洞察的能力边界。3.技术宅拯救世界:你热衷学习,对前沿技术原理与应用有强烈的探索欲。面对各类复杂的运营业务,你会致力于与技术团队协作,通过不同的前沿技术应用去解决挑战。4.主人公意识:你会拥有充分的发挥空间和团队支持,相应地,你需要全面思考执行方案、主动推进业务的落地、为最终的结果负责。加分项数据能力:对数据敏感,有清晰的定量分析思考框架及逻辑思考能力。AI工程能力:对AI技术与应用理解深刻,能独立落地具备处理运营相关业务场景的智能体。全球化视野:关注国际形势,对美国、日本、韩国等地区的玩家生态有深入理解。投递说明投递材料请附上如下内容:-游戏经历:需要详细附上自己的游戏经历和深度。-(可选)AI作品:欢迎在投递时附上令你感到骄傲的AI成果/工具设计(最好游戏或运营工作存在一定关联性),并附上创作思路和迭代记录,优秀者可免笔试直通面试!面向对象2027届及之后毕业的在校生投递链接https://jobs.mihoyo.com/?sharePageId=121176&amp;recommendationCode=052BT&amp;isRecommendation=true#/campus/position/8090
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务