2020 CSP-J 初赛解析

题面  老师给的解析  自己觉得很好的一篇题解

 直接说重点题吧,不耽误时间了

T5:

 

这个很显然就是让进这个 while 的次数尽可能少,

那么我们可以让他只进一次 while,即让第一次进 while 的时候就令 $FLAG = 1$

由于只进一次 while,那么只需要算第一次进的时候需要比较几次

很显然,n 个数需要比较 n-1 次

故答案为 C


T7:

 

 由于有的元素可能不在这个链里面,即断开了连接,所以无法访问任意一个元素

并且 “随机访问一个元素” 指在 O(1) 的时间里访问该元素

链表的访问是O(n) 的


 T14:

 

首先要注意,这个 “分配方案” 是看成不同班,同样的学生

那么这就是很明显的插板了,并且已经说明了每个班至少有一个名额,

所以答案就是 $C_{10-1}^{7-1} = 84$ 种分配方案


 

T15:

 

 从这五副手套中取出两副,一共有 $C_5^2 = 10$ 种取法,

再随意配上两只手套 $C_{10-2\times2}^{6-2\times2} = C_6^4 = 15$ 种取法,

其中要去除掉这两只手套能配成一对的可能取法:$C_3^1 = 3$。

所以一共有 $C^3_5\times(C^2_6C^1_3120$ 种取法


 

T16就只能自己去模拟,将对应关系一一列出来,这玩意没啥好解析的

T17:

这是一个进制的题,算出来的 ans 是进位的次数

len 代表的是这个转化出来的数的数位长度,其中最高位存储在 a[len-1] 中

(1):这个 len 应该一直等于 $2$,不论 n 的值为几,

  原因是在 i = 0 的时候必然会有一次进位,而进位之后 len 为 $2$,a[0] = 0,a[1] = 1

  但是这时候 a[1] 本来也应该进一次位的,不过这个进位是 if ,不是 while,所以只会进行一次进位操作

(2):错误,当 n = 0 的时候,len = 1,此时 $len > n$

(3):正确,自己代数进去试试就知道了

(4):$10^15$,因为每次 ++d[0] 都会 进行一次 ++ans,所以 n 为几,ans 就是几、

(5):可以代入 9(即$3^2$)试试,最终得出的结果为 $4$ ,即 $\frac{3^2-1}{2}$

(6):自己看题解


 T18

可以理解为 d[i][0] 是数列一, d[i][1] 是数列二

每次合并的价值为 数列一两数相加 与 数列二两数相减

求进行 n-1 次合并后的最大价值

(1):会直接数组都不输入,直接结束程序

 

posted @ 2021-09-17 20:57  little_sheep_xiaoen  阅读(856)  评论(0编辑  收藏  举报