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