2025年【LGR-(-15) 】SCP 2022 第一轮(初赛 J 组)模拟 题解

【LGR-(-15) 】SCP 2022 第一轮(初赛 J 组)模拟 题解前言 模拟赛链接 部分题目没写解析 开学了 在肝作业 咕一下 正文 单选 1 选 C 考察进制转换 2 选 D 是或 是与 是非 3 选 A 首先排除 C D 然后 128MB 的栈空间很大 不会发生爆栈

大家好,我是讯享网,很高兴认识大家。

前言

正文

单选

1

在这里插入图片描述
讯享网
选C,考察进制转换。

2

在这里插入图片描述
选D。∨是或,∧是与,﹁是非。

3

在这里插入图片描述
选A。首先排除C、D。然后128MB的栈空间很大,不会发生爆栈。但这个数据量不写记忆化是肯定会TLE的。

4

在这里插入图片描述
选B。首先先把树画出来,然后后缀表达式的顺序是左右根。
在这里插入图片描述

5

在这里插入图片描述
选A。 4 × 60 × 10 × 2048 × 152 × 32 8 × 1024 × 1024 × 1024 \frac{4\times60\times10\times2048\times152\times32}{8\times1024\times1024\times1024} 8×1024×1024×10244×60×10×2048×152×32,算出来约等于21。

6

在这里插入图片描述
选C,左右根。

7

在这里插入图片描述
选B。相当于是这五个点最多连成的10条线中选1~10根,把算出来的加起来,也就是 C 10 1 + C 10 2 + . . . + C 10 10 C^{1}_{10}+C^{2}_{10}+...+C^{10}_{10} C101+C102+...+C1010,结果为1024。

8

在这里插入图片描述
选D,栈是先进后出,模拟一下即可。

9

在这里插入图片描述
选B。第一枚为1的有6+5+4+3+2+1=21种结果,以此类推,一共21+15+10+6+3+1=56种结果。

10

在这里插入图片描述
选D。基础知识。

11

在这里插入图片描述
选A。插入O( N 2 N^{2} N2),希尔O( N 1.3 N^{1.3} N1.3),归并和快排O( N l o g N NlogN NlogN)。

12

在这里插入图片描述
选B。选择排序一下。

13

在这里插入图片描述
选C。

14

在这里插入图片描述
选D。strlen要整成char才可以用。

15

在这里插入图片描述
选B。非常幸运,我前几天才看了一个视频叫“CCF走过60年之NOI”,2022-60=1962。好耶!

阅读

1 #include <iostream> 2 using namespace std; 3 const int MAXN = ; 4 int n, a[MAXN], a1[MAXN], b[MAXN], lim; 5 void solve1() { 
    6 for (int i = 1; i <= n; i++) 7 b[a[i]]++; //① 8 for (int i = 1; i <= lim; i++) { 
    9 if (b[i]) //② 10 cout << i << " "; 11 } 12 cout << endl; 13 } 14 void solve2() { 
    15 int cnt = 0, flag; 16 for (int i = 1; i <= n; i++) { 
    17 flag = false; 18 for (int j = 1; j <= n - 1; j++) { 
    19 if (a[j] > a[j + 1]) { 
    20 swap(a[j], a[j + 1]); 21 cnt++; 22 flag = true; 23 } 24 } 25 //if (flag==false) 26 // break; 27 } 28 for (int i = 1; i <= n; i++) 29 cout << a[i] << " "; 30 cout << endl; 31 } 32 int main() { 
    33 cin >> n; 34 for (int i = 1; i <= n; i++) { 
    35 cin >> a[i]; 36 a1[i] = a[i]; //③ 37 lim = max(a[i], lim); //④ 38 } 39 solve1(); 40 for (int i = 1; i <= n; i++) 41 a[i] = a1[i]; 42 solve2(); 43 return 0; 44 } 

讯享网

1)
在这里插入图片描述
F,应该是冒泡排序。
2)
在这里插入图片描述
T,没毛病。
3)
在这里插入图片描述
F,应该是7。
4)
在这里插入图片描述
T,剪了个枝,只要以及排好序就不运行了,加不加都是排好序的结果。
5)
在这里插入图片描述
选C,solve1对于相同的数只会输出1次,但solve2会把所以数都输出。C中有相同的数,所以结果不同。

6)
在这里插入图片描述
选B,加个循环,有几个输出几个,就一样了。

讯享网1 #include <cstdio> 2 #include <cstring> 3 4 const int maxn = 1003; 5 6 int type, n, m; 7 char s[maxn], t[maxn]; 8 9 int main() { 
    10 scanf("%d %s %s", &type, t, s); 11 n = strlen(s); m = strlen(t); 12 if (type < 2) { 
    13 for (int i = 0; i < m; ++i) s[i] = t[i]; 14 } else if (type == 2) { 
    15 strcpy(s, t); 16 // 提示:如果此时调用 printf("%s\n", s),则本次输出结果为整个 t 字符串和换行,没有其他字符。 17 } else { 
    18 for (int i = 0; i < m; i += 4) { 
    19 unsigned int code = 0, pos = i; 20 for (int j = 1; pos < i+4; j*=100, ++pos) { 
    21 if (pos == m) break; 22 code += t[pos] * j; 23 } 24 pos = i; 25 while (code != 0) { 
    26 s[pos++] = code % 100; 27 code /= 100; 28 } 29 } 30 } 31 for (int i = 0; i < n; ++i) printf("%c", s[i]); 32 printf("\n"); 33 } 

在这里插入图片描述

1)
在这里插入图片描述
选F,第12行的<显然不能改。

2)
在这里插入图片描述
选T,手动模拟。

3)
在这里插入图片描述
选F,同样模拟一下即可。

4)
在这里插入图片描述
选T,code上来就对于0说明t[pos]都是0,所以没影响。

5)
在这里插入图片描述

选B。if里是O( M 2 M^{2} M2),输出是O( N N N),不知道哪一个大,所以就相加起来。

6)
在这里插入图片描述
选C,1是直接替换,3要%100。其中只有C选项的 e e eASCII超过了100。

答案:在这里插入图片描述
暂时咕咕咕一下,懒(

完善

1

裸的01背包。

1)
在这里插入图片描述
选B,m记录背包最大容量。

2)
在这里插入图片描述
选C,0元可以。

3)
在这里插入图片描述
选D,01背包所以倒着循环,就是个背包模板。

4)
在这里插入图片描述
选C,只要自己目前有可能或选了a[i]有可能,就是可以支付。
5)
在这里插入图片描述
选B,有的话就++。

2

在这里插入图片描述
选A。
在这里插入图片描述
选C,观察后面可以看出从0到n-1。

在这里插入图片描述
选D。
在这里插入图片描述
选B。感谢提醒。
在这里插入图片描述
选C,a[j]不是加的话就是减,else里显然是给sum减去a[j]。

小讯
上一篇 2025-03-11 21:09
下一篇 2025-04-08 15:08

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/56336.html