初赛模拟错题,难题合集

初赛模拟错题,难题合集

CSP-S 初赛模拟试题1

选择题

  1. 微型计算机中,( )的存取速度最快
    A.高速缓存 B.寄存器 C.外存储器 D.内存储器
    Sol:寄存器>高速缓存>内存储器>外存储器

  2. 由数字1,2,3,4,5,6,7(同一数字可以重复使用)所组成的不同的三位数中有( )个是3的倍数
    A.43 B. 72 C. 78 D.115
    Sol:把所有数分为三类,mod 3 为 0/1/2 就变为了 (3,6) (1,4,7) (2,5)。
    答案就是 0+0+0 0+1+2 0+2+1 1+0+2 1+1+1 1+2+0 2+0+1 2+1+0 2+2+2
    8 + 12 + 12 + 12 + 27 + 12 + 12 + 12 +8=12*6+16+27=115

程序阅读

二、阅读程序写结果
1.
题号 (1) (2) (3) (4) (5) (6)
答案 × × × √ B C
【解析】
程序统计了 a[i] xor a[j]中出现次数最多的数(如有多个则取最小的)。
(1) 𝑛可以等于5000。
(2) 输出的可能为0。
(3) a[i]很大时,它们的异或值不一定大。
(4) 因为答案初始化为0,可以不从0开始枚举。
(5) 只要𝑛 > 1,所有 a[i]=i 时,答案一定为1。
(6) 0~15中的所有结果都有可能。

题号 (1) (2) (3) (4) (5) (6)
答案 √ × √ √ C C
【解析】
(1) 每次只会在满足条件的情况下调用该函数。
(2) 准确地说,应该满足 𝑖 = m a x ( 𝑡 1 + 𝑡 2 − 𝑛 , 0 ) 𝑖 = max(𝑡1 + 𝑡2 − 𝑛, 0) i=max(t1+t2n,0)
(3) 𝑡 1 , 𝑡 2 𝑡1,𝑡2 t1,t2的顺序对答案并没有影响。
(4) 由于𝑠1在统计出𝑡1之后并不会再使用,可以重复利用这个数组。
(5) 当 𝑠 1 𝑠1 s1 𝑠 2 𝑠2 s2分别为 0101010 0101010 0101010 1101101 1101101 1101101 时,答案为63。
(6) 对于1~𝑁中的每一个数,都需要做一次快速幂,复杂度为 O ( 𝑁 l o g 𝑁 ) O(𝑁 log 𝑁) O(NlogN)

题号 (1) (2) (3) (4) (5) (6)
答案 × × × × C A
【解析】
(1) 如果不使用数组进行记忆化组合数的值,算法每次求组合数将花费 𝑂(𝑛𝑚) 的时
间,所以是错误的。
(2) 预处理 𝑝𝑤 数组时,𝑖 枚举到了 1005,超出了数组定义的范围。但由于越界后值
会修改到𝑞,如果恰好修改的是𝑞的值并不会发生错误。
(3) 显然会改变,将 𝑗 = 𝑛 代入验证即可。
(4) 显然会改变,将 𝑗 = 𝑛 代入验证即可。
(5) 直接暴力枚举即可。
(6) 考虑范围比较大,可以直接画表格递推。

完善程序

CSP-S 初赛模拟试题2

选择题

  1. 排序大纲在这里插入图片描述

  2. 若𝑛, 𝑚 都是0~255中的整数,则有( )对𝑛, 𝑚满足n + m = (𝑛 and 𝑚) xor (𝑛 or 𝑚)。
    A.256 B.6561 C.6739 D.65536
    Sol: x+y=x xor y(当x,y,每一位都不一样) 分别考虑每一位,只要满足不都是 1 即可,因此每一位有三种情况 (0,1)(1,0)(0,0)答案为 3 8 3^8 38 = 6561

  3. .在1~10的所有排列中,有( )个满足3排在第二位,且与1相邻的数都是偶数
    A. 86400 B.100800 C. 111600 D. 120960
    Sol: 分 1 在第 3~9 位和第 10 位两种情况讨论,选出两个偶数放在 1 旁边,剩下的数可以按任意顺序排列

程序阅读

(1) 总共有|𝑠| + 1个数,其中最小的数为0,最大的数小于等于|𝑠|,总和一定严格小于
(|𝑠| + 1)
2。
(2) T 表示队列中的元素个数,最终肯定恰好为𝑛。
(3) 不会改变,因为 k=1 时 s[k-1]= ‘%’,一定不等于’L’。
(4) 转移都是单向的,不可能出现 i 转移到 i±1 再转移回来的情况,因此复杂度不受
影响。
(5) 直接模拟即可。
(6) 考虑每个“LLRL”,发现𝑥个“LLRL”对应的答案为6𝑥 − 2。

题号 (1) (2) (3) (4) (5)
答案 C D C B C
【解析】
考虑排序后,可以证明每个人匹配的马一定在一个范围内,修改可以用线段树维护
矩阵优化 DP 实现,但是这个转移矩阵是取 max 广义乘法矩阵。设 f[i]表示前 i 个马和人
的匹配最大权值和,显然 f[i]只能从 f[i-1],f[i-2],f[i-3]转移而来。
(1) 初值显然为 -inf。
(2) 取 max 广义乘法。
(3) 注意转移时不能出现人和马匹配的情况
(4) 乘的时候一定要是右子树乘左子树,因为这个矩阵乘法不满足交换律。
(5) 更新 ban 数组,注意一开始映射是用 pa 的。

【解析】
程序实现了权值线段树合并维护某个子树的子树大小,子树内每个节点的深度值和,
子树内每个节点的深度值平方和(此处的深度值指某个点到根的路径上的边权和)
(1) 线段树合并 y 合并到 x 上,如果 x 不存在,直接令 x=y
(2) 由于深度值已经经过零散化用 vector g 来存储,vector 下标从 0 开始编
号,因此为 g[v − 1]
(3) X 表示当前节点的实际深度值,dis[x] 已经过离散化,故为 g[dis[x] − 1]

(4) 式子题,设当前节点深度值为 X 与另一个深度值为 y 的节点匹配,LCA 深度值
为 dis,令 Z = d i s ∗ 2 + 1 Z = dis ∗ 2 + 1 Z=dis2+1 ,此时 X >= y,故三角形另一条边 z 的范围 X − y < z < X + y − 2 ∗ d i s X − y < z < X + y −2 ∗ dis Xy<z<X+y2dis
所以树三角个数会增加 X + y − 2 × d i s − 1 − ( X − y + 1 ) + 1 = 2 × y − 1 − 2 × d i s = 2 × y − Z X + y − 2 × dis − 1 − (X − y + 1) + 1 = 2 × y − 1 − 2 ×dis = 2 × y − Z X+y2×dis1(Xy+1)+1=2×y12×dis=2×yZ
所以树三角大小会增加 ( X + y − 2 × d i s ) × ( 2 × y − Z ) + ( X + y − 2 × d i s − 1 + X − y + 1 ) × ( 2 × y − Z ) / 2 = ( X + y − Z + 1 ) × ( 2 × y − Z ) + ( 2 × X − Z + 1 ) × ( 2 × y − Z ) / 2 (X + y − 2 × dis) × (2 × y − Z) + (X + y − 2 ×dis − 1 + X − y + 1) × (2 × y − Z)/2 = (X + y − Z + 1) × (2 × y − Z) + (2 × X − Z + 1) ×(2 × y − Z)/2 (X+y2×dis)×(2×yZ)+(X+y2×dis1+Xy+1)×(2×yZ)/2=(X+yZ+1)×(2×yZ)+(2×XZ+1)×(2×yZ)/2,与 A 项相同

(5) 式子题,设当前节点深度值为 X 与另一个深度值为 y 的节点匹配,LCA 深度值为 d i s dis dis,令 Z = d i s ∗ 2 + 1 Z = dis ∗ 2 + 1 Z=dis2+1,此时 X < y X < y X<y,故三角形另一条边 z 的范围 y − X < z < y + X − 2 ∗ d i s y − X < z < y + X −2 ∗ dis yX<z<y+X2dis,所以树三角个数会增加 y + X − 2 × d i s − 1 − ( y − X + 1 ) + 1 = 2 × X − 1 − 2 × d i s = 2 × X − Z y + X − 2 × dis − 1 − (y − X + 1) + 1 = 2 × X − 1 − 2 ×dis = 2 × X − Z y+X2×dis1(yX+1)+1=2×X12×dis=2×XZ,由于求的是 X 与已加入线段树的所有满足条件的 y 匹配的答案之和,所
以个数增加了 ( 2 × X − Z ) × t m p 2 (2 × X − Z) × tmp2 (2×XZ)×tmp2 ( tmp2 是满足条件的节点个数)

CSP-S 初赛模拟试题6

选择题

  1. 同时查找 2n 个数中的最大值和最小值,最少比较次数为()
    A. 3(n-2)/2 B. 4n-2 C. 3n-2 D. 2n-2
    Sol:前两个数比较,大的为最大值,小的为最小值,用掉一次比较。后面 2(n-1)个数,每两个比较,大的同最大值比较,小的同最小值比较,3(n-1)次比较,共 3(n - 1) + 1= 3n - 2 次比较**

  2. 数列{an}是等差数列,首项 a1>0,a2020+a2021>0,a2020×a2021<0,则使前 n 项和Sn>0 成立的最大项数 n 是()
    A. 2020 B. 4040 C. 4041 D. 4042
    假设:a2020+a2021=0 则: |a1+a2+…a2020| =|a2021+…a4040|,就是关于数轴的原点对称,那么最好的情况就是将原点向右移动一下

程序阅读

  1. (4) 当 n<=1e8 时,_sqrt 的值一定会小于 sqrt(1e9),所以 j<cnt 去掉后那个 for
    循环至少会因为访问到 p[j]>_sqrt 的 j 的位置而导致循环结束,并不影响程序正确性,也
    不会出现运行错误。正确

完善程序

题目中的程序就是遍历 FBZ 树的前序遍历。与往常程序不同,本题用 while 循环代替
递归。
(1) s2 指当前处理的字符串,s1 指所有出现的字符串个数。
(2) 全为 1 就是 B。
(3) 全为 0 就是 Z。
(4) 将当前的所有字符串向后移动两位,给即将出现的两个字符串空出位置。
(5) 将原串分成两半。
(6) (7) 将缩短后的串后半部分清空。

CSP-S 初赛模拟试题7

选择题

  1. IP地址特殊
  2. 主定理

程序阅读

完善程序

CSP-S 初赛模拟试题8

选择题

程序阅读

完善程序
  1. 【解析】
    (1) 观察函数名:isleaf,可猜测该函数功能为判断一个点是否为叶子,显然左右儿子
    都不存在时该点为叶子,故选 B。
    (2) 因为该树为二叉树,故当前点的儿子情况仅有 4 种: 左右儿子均不存在(叶子)
    或 左儿子不存在 或 右儿子不存在 或两儿子均存在,而观察程序第 10,13,14 行可知前三
    种情况已经判断掉了,故猜测 15 行处是处理两儿子均存在的情况,故选 A。
    (3) t1,t2,t3,t4 均为 t 的搜索树上的儿子,显然必须这四个都合法,t 才合法,故选 A。
    (4) t 记录的是每一个树的根,所以要新建根 tot + 1。
    (5) tot 记录的是总共的点数,每次共 n 个点加进来,故为 tot += n。

CSP-S 初赛模拟试题9

选择题

程序阅读

完善程序
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值