📜  Google 实习 2020 – Google 在线挑战赛(第一轮编码)

📅  最后修改于: 2022-05-13 01:58:35.026000             🧑  作者: Mango

Google 实习 2020 – Google 在线挑战赛(第一轮编码)

最近我收到一封来自 Google 的电子邮件,我已从 Resume review round To Google's Online Challenge round 中被选中。 8 月 29 日,我提出了那个挑战,并面临这两个问题,我想与大家分享……

  1. 一个特殊字符串:给你一个由小写拉丁字母 a - z 组成的字符串S。找出必须更改以使 S 特殊的最少字符数。

    当且仅当对于所有 (S[i], S[j]) 其中 (1 ≤ i ≤ N/2) 和 (N/2 + 1 ≤ j ≤ N) 有一个字符串S 是特殊的以下条件为真:

    S[i] > S[j]
    S[i] < S[j]
    S[i] = S[j]
    S[i]: Represents the ith character of string S(1-based indexing)

    输入格式:

    • 第一行包含一个整数 T 表示测试用例的数量
    • 每个案例的第一行包含一个整数 N 表示 S 的长度
    • 每个测试用例的第二行包含一个字符串S

    输出格式:打印一个整数,表示新行中每个测试用例所需的最小更改次数。

    约束:

    1 ≤ T ≤ 5
    1 ≤ N ≤ 103
    N is Even

    样本输入:

    1
    6
    aababc

    样本输出:

    2

    解释:

    Change S[4] = ‘d’(1 – based indexing)
    Change S[5] = ‘d’
    New String  = ‘aabddc’
    Now all Pairs (S[i],S[j]) 
    Satisfy the second condition, S[i] < S[j].
  2. 特殊矩阵:给定一个 N × N 矩阵 A。该矩阵由正整数组成。一步,您可以将以下单个变换应用于矩阵:

    选择矩阵的任意元素并将其增加或减少 1。每个元素可以增加或减少任意次数。

    特殊数 P 是一个非负整数,其下列二次方程至少有一个负整数根:

    X2 - 2 × P + x = 0

    如果至少以下条件之一为真,则称矩阵为特殊矩阵:

    1. 矩阵有一行只有特殊数字。
    2. 该矩阵有一列仅包含特殊数字。

    你的任务是计算获得特殊矩阵 A 所需的最小移动次数

    输入格式

    • 第一行包含 T 表示测试用例的数量。
    • 每个测试用例的第一行包含一个整数 N,表示行数和列数。
    • 每个测试用例接下来的 N 行包含 N 个整数,表示初始矩阵 A。

    输出格式

    对于每个测试用例,在新行中打印一个整数,表示从提供的矩阵中获取特殊矩阵所需的最小移动次数。如果您已经获得了一个特殊的矩阵,则打印 0。

    约束:

    1 ≤ T ≤ 10
    1 ≤ N ≤ 500  
    1 ≤ A[i][j] ≤ 1011(1 ≤ i ≤ N, 1 ≤ j ≤ N)

    样本输入:

    1
    3
    1 2 3
    4 5 6
    7 8 9

    样本输出:

    1

    说明:可以修改第一行或第三列,以将矩阵转换为具有最少移动次数的特殊矩阵。通过将第一行的第二个元素增加一次,可以将第一行转换为 [1,3,3]。