语法组月赛视频讲解

点击查看讲解视频


T1

思路

矩形面积 =dh= d * h

半圆面积 =π×r22= \frac{π \times r^2}{2}


T2

思路

根据题目意思,可以知道,我们要求的两位数要尽可能的小,一位数尽可能的大。这样才能够保证差值最小。

对三个数字进行从小到大排序,因为题目要求两位数的十位不能为 00,所以要进行特殊判断。如果有一个 00,就需要放到两位数的个位,如果有两个 00,就需要保证两位数的十位为非 00 的数字。


T3

思路

题目要求插入数字之后的最大值,所以我们尽可能的靠前插入,在插入的时候满足 d>d > 当下遍历的数字即可。

如果发现都没有可插入的位置,就把 dd 放在数字串最后即可。


T4

思路1:桶排序

  1. 桶计数法:我们可以使用两个桶(数组)来记录比赛需要的难度值和已准备的难度值的出现次数。
  2. 比较两个桶:对于每一个比赛需要的难度值,检查已准备的题目中是否包含该难度。如果没有包含,则需要新增该题目。
  3. 统计结果:统计所有未被覆盖的难度值的数量,即为需要新增的题目数量。

思路2:双指针

  1. 双指针遍历:由于 aa 数组是严格递增的,bb 数组是非递减的,可以利用双指针技术高效地检查 bb 中是否包含 aa 中的每个元素。

    • 初始化两个指针 ij,分别指向 aabb 的起始位置。
    • 对于每个 aia_i,在 bb 中寻找是否存在 bj=aib_j = a_i。如果存在,则不需要新增题目;否则需要新增一道题目。
    • 由于 bb 是非递减的,可以跳过比当前 aia_i 小的 bjb_j 值。
  2. 贪心匹配:通过双指针的贪心匹配,可以确保每个 aia_i 最多被检查一次,从而将时间复杂度优化到 O(n+m)O(n + m)


T5

思路

  1. k>1k > 1 的情况

    • k>1k > 1 时,生成的数字 yy 可以表示为 xx 重复 kk 次。例如,x=12x=12k=2k=2 时,y=1212y=1212
    • 这种数字一定可以被 xx 和另一个由 11 重复 kk 次组成的数(如 1111, 111111, ..., 即 $\frac{10^{k \cdot \text{len}(x)} - 1}{10^{\text{len}(x)} - 1}$)整除,因此 yy 是合数。
    • 结论:只要 k>1k > 1yy 一定是合数,直接输出 NO
  2. k=1k = 1 的情况

    • 此时 y=xy = x,只需判断 xx 本身是否为质数。
    • 需要单独处理 x=1x=1 的情况(11 不是质数)。
    • 对于其他 xx,判断是否为质数即可。

T6

思路

  1. k=0k=0

    • 根据贪心思路,易得将 a,ba, b 数组排序后两两对齐配对的结果最优。
  2. k=1k=1

    • 有一次免费机会,选择 aabb 中的任意一个都有可能,需要枚举选择最优。枚举免费机会 O(n2)O(n^2)aabb 中剩余部分依旧是两两对齐配对,计算当前方案 O(n)O(n),整体为 O(n3)O(n^3)
    • 之前免费方案为 aia_ibj1b_{j-1},其代价为 c1c_1, 现在免费方案为 aia_ibj(j<=i)b_j(j <= i),其代价为 c2c_2。观察可以发现:c2=c1aj1bj+aj1bj1c_2=c_1-|a_{j-1}-b_j|+|a_{j-1}-b_{j-1}|
    • 之前免费方案为 aia_ibj1b_{j-1},其代价为 c1c_1, 现在免费方案为 aia_ibj(j>i)b_j(j > i),其代价为 c2c_2。观察可以发现:c2=c1ajbj+ajbj1c_2=c_1-|a_{j}-b_j|+|a_{j}-b_{j-1}|

​ 与上第一个规律类似,提前预处理出 aia_ib1b_1 进行免费配对后的代价,再使用以上规律计算即可,可将最内层优化至 O(1)O(1),总复杂度 O(n2)O(n^2)

0 条评论

目前还没有评论...