DIMS666 2024-02-21 15:19 采纳率: 0%
浏览 8

大一生转专业机试求指导

题目如下(每年三题):
1

img

2

img

3

img

4

img

5
一个简单图有 N(2≤N*≤10000)个顶点,某些顶点之间有边相连,边共有 N-1条。 任意两个顶点之
间,有且只有一条不经过重复边的路径把它们连在一起。
顶点 i 有一个权重 e_i,所有权重均为非负整数, 且范围在 int 内。对于任意节点 i和 j,定义 A(i,j)
为从 i到 j 的路径上所有顶点(包括 i 和 j)的权重相异或得到的数值。
请根据输入中的查询要求,计算出相应的 A(i,j)
6
一个 1000 行, 1000 列的方格表中,画了一条长度小于等于 2000 的折线。
折线起始于某个格子的中心,结束于另外一个格子的中心。
折线的每一部分都与方格的边平行,每当穿过一个格子时一定经过其中心,并且该折线绝对不会与
自己相交。(下图显示了一个这样的折线作为例子。)
很可惜,你或者你的程序都无法直接看到这个方格表,也就无法知道这条折线具体所在的位置。为
了找到这条折线的头和尾,你的程序可以提出一些查询:你的程序选择方格表中的任意一个矩形,
然后它就可以得知以上折线与该矩形的边共有多少个交点。
例如在下图中,程序选择了一个 2 行 2 列的矩形,折线与该矩形的边共有 4 个交点。
请用尽量少的查询,找到折线的头和尾

请问大概要达到什么算法水平才能顺利通过机试?以及大概的学习思路(无竞赛经历,掌握基础的c语言编写能力,下学期会修数据结构与算法与离散数学)

  • 写回答

2条回答 默认 最新

  • GISer Liu 2024-02-21 15:48
    关注

    该回答引用自GPT-3.5,由博主GISer Liu编写:

    这个机试题目涉及到图论和几何算法的知识,需要一定的算法水平才能顺利通过。下面我将给出一个大致的解决思路和解决方案:

    1. 图论部分:对于第一个问题,计算顶点 i 到顶点 j 的路径上所有顶点的权重异或值,这可以通过树的遍历来实现。首先,需要将给定的图构建成一棵树,然后可以使用深度优先搜索(DFS)或广度优先搜索(BFS)来遍历这棵树,同时记录路径上的权重异或值。遍历完毕后,就可以得到顶点 i 到顶点 j 的路径上所有顶点的权重异或值,即 A(i,j)。

    2. 几何算法部分:对于第二个问题,需要找到折线的头和尾。这可以通过二分搜索的方法来实现。首先,在给定的方格表中随机选择一个矩形,然后通过二分搜索不断缩小矩形的大小,直到确定折线的头和尾的位置。具体步骤如下:

      • 随机选择一个初始矩形,并计算其中与折线的交点数;
      • 通过二分搜索,逐步缩小矩形的大小,直到矩形的大小足够小,使得与折线的交点数为0;
      • 最后确定矩形的左上角和右下角作为折线的头和尾。

    在学习过程中,你可以首先加强对图论和树的理解,学习深度优先搜索(DFS)和广度优先搜索(BFS)等算法。然后,你可以学习几何算法中的二分搜索等技巧。同时,对于 C 语言的编程能力也要加强,尤其是对于树的表示和遍历算法的实现。在学习数据结构与算法以及离散数学的过程中,不断练习算法题目,提高编程和解决问题的能力,相信你能够顺利通过机试。

    如果该回答解决了您的问题,请采纳!如果没有,请参考以下方案进行修订

    用户答题指南

    评论

报告相同问题?

问题事件

  • 创建了问题 2月21日