好水。
题目 体感难度 官方难度 皓仔的存钱罐 红 红 皓仔买水果 红 红 皓仔的车辆测试 红 红 皓仔的字母寻宝 红 红 皓仔的字母占比 红 红 皓仔的手工课 红 橙
A
直接输出 ⌊n100⌋\lfloor\dfrac{n}{100}\rfloor⌊100n ⌋ 即可,没啥好讲的:
CODE
时间复杂度:O(1)O(1)O(1);空间复杂度:O(1)O(1)O(1)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
B
求剩余零钱,我们用 nmod m{n}\mod{m}nmodm。这里 mmm 指某一种水果的单价。我们只要输出 min({nmod a,nmod b,nmod c})\min(\{n\mod a,n\mod b,n\mod c\})min({nmoda,nmodb,nmodc}) 即可。
CODE
时间复杂度:O(1)O(1)O(1);空间复杂度:O(1)O(1)O(1)
C
由题意可得一共有 n−1n-1n−1 个颠簸量。可以看这幅图(有点丑见谅),这里的每一个点都代表一个颠簸量:
根据以上内容,我们不妨把题目形式化的说:给定你正整数 nnn 和 nnn 个正整数 hih_ihi ,请你求出:
∑i=1n−1∣hi+1−hi∣n−1\dfrac{\sum^{n-1}_{i=1} |h_{i+1}-h_i|}{n-1} n−1∑i=1n−1 ∣hi+1 −hi ∣
的值。
那就好理解了。我们根据上述式子模拟即可。
CODE
时间复杂度:O(N)O(N)O(N);空间复杂度:O(N)O(N)O(N)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
D
还行。
题目要求我们从小到大输出大写字母在矩阵中所占的位置,注意需要从大到小,我们用 map 进行储存。 map 的键为这个大写字符,值我们用一个 pair 去存,分别为这个大写字母的行号和列号。最后我们遍历整个 map 进行输出即可。
CODE
时间复杂度:O(NM)O(NM)O(NM);空间复杂度:O(NM)O(NM)O(NM)
注意到键里存的只可能有每个大写字母的 ASCIIASCIIASCII。因为 map 是使用红黑树进行储存的,每一次加入元素/访问元素的时间复杂度为 O(logn)O(\log n)O(logn),我们可以用 unordered_map 进行储存。效率会更高。
CODE
时间复杂度:O(NM)O(NM)O(NM);空间复杂度:O(NM)O(NM)O(NM)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
E
我们先对单独的测试样例进行分析。
首先我们清楚十进制转 ppp 进制的方法是短除取余,并倒序输出。然而题目中并不需要倒序输出。
读题,发现要我们求字母占比。我们只需要根据进制转换的相关方法,分别求出字母数量和总字符数即可。注意特判。
注意到如果输入的 nnn 在 999 以内,一定没有字母数量。直接输出 222 即可。当 10≤n≤3510 \leq n \leq 3510≤n≤35 时,直接输出 n+1n+1n+1 即可。正确性显然。
CODE
时间复杂度: O(TLOGN)O(T \LOG N)O(TLOGN);空间复杂度:O(1)O(1)O(1)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
F
很水?
注意到 3≤n≤1003\leq n \leq 1003≤n≤100,我们直接暴力枚举即可。注意从 max({a1,a2,…,an})\max(\{a_1,a_2,…,a_n\})max({a1 ,a2 ,…,an }) 从小到大枚举。
CODE
时间复杂度:O(N×MX)O(N\TIMES MX)O(N×MX)。其中 MX=MAX({A1,A2,…,AN})MX= \MAX (\{A_1,A_2,…,A_N\})MX=MAX({A1 ,A2 ,…,AN });空间复杂度:O(N)O(N)O(N)
不难发现我们可以继续优化,使用二分答案进行编写。具体过程就不细讲了。注意 lll 和 rrr 的处理不要出错。
(省流:这题是原,原题木材加工
时间复杂度:O(NLOGMX)O(N \LOG MX)O(NLOGMX);空间复杂度:O(N)O(N)O(N)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
谢谢观看,下播。