Google 实习 2020 – Google 在线挑战赛(第一轮编码)
最近我收到一封来自 Google 的电子邮件,我已从 Resume review round To Google's Online Challenge round 中被选中。 8 月 29 日,我提出了那个挑战,并面临这两个问题,我想与大家分享……
一个特殊字符串:给你一个由小写拉丁字母 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].
特殊矩阵:给定一个 N × N 矩阵 A。该矩阵由正整数组成。一步,您可以将以下单个变换应用于矩阵:
选择矩阵的任意元素并将其增加或减少 1。每个元素可以增加或减少任意次数。
特殊数 P 是一个非负整数,其下列二次方程至少有一个负整数根:
X2 - 2 × P + x = 0
如果至少以下条件之一为真,则称矩阵为特殊矩阵:
- 矩阵有一行只有特殊数字。
- 该矩阵有一列仅包含特殊数字。
你的任务是计算获得特殊矩阵 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]。