当前位置: 首页 > news >正文

上海市2025CSP-J十连测Round 5卷后感

题目

上海市2025CSP-J十连测Round 5

大感

难度感觉还好,我这次也是拿到了80分的成绩,试卷打印的时候少了第一道完善程序,所以这份试卷的第一道完善程序作废,不得分

错题大纲

一 单项选择

T6

题目:设某算法的计算时间表示为递推关系式$ T(n)=T(n-1)+n ,, n 为正整数,为正整数,为正整数, T(0) = 1$则该算法的时间复杂度为( )

A $ O(logn) $
B $ O(nlogn) $
C $ O(n) $
D $ O(n^2)$

这道题,我当时是模拟了一下,模拟的结果是这样的:

T(5)=T(4)+5
T(4)=T(3)+4
T(3)=T(2)+3
T(2)=T(1)+2
T(1)=0

此时,nnn为5,一共做了5次的T(n)T(n)T(n),则时间复杂度为O(n)O(n)O(n)

但是错了

我估摸着是答案写错了

然后,我们邀请AI:

image.png

说人话,就是模拟的数据太小了,建议增加数据模拟值

T10

题目:具有nnn个顶点,eee条边的图采用邻接表存储结构,进行DFS和BFS的时间复杂度均为( )

A O(n+e)O(n+e)O(n+e)
B O(ne)O(ne)O(ne)
C O(e2)O(e^2)O(e2)
D O(n2)O(n^2)O(n2)

我在考试中选了B,那时候我根本不知道邻接表是啥

现在让我们邀请AI

邻接表
邻接表是图的一种高效存储结构,用于表示顶点间的关联关系,尤其适合稀疏图(边数远少于顶点数平方)。
存储方式分两部分:

  1. 顶点表:用数组或链表存储所有顶点信息,每个顶点元素关联一个指针,指向其邻接边的列表。
  2. 邻接边表:为每个顶点建立一个链表,链表节点存储与该顶点直接相连的“邻接顶点索引”及边的权重(无向图/有向图通用)。比如无向图中顶点A连B,A的邻接表含B,B的邻接表也含A;有向图中A→B仅A的邻接表含B。
    相比邻接矩阵,邻接表节省空间,查询顶点邻接边时效率更高,是图论中常用的存储方式。

继续邀请ai分析题目

答案选A:O(n+e)O(n+e)O(n+e)
解析:在邻接表存储结构中,DFS(深度优先搜索)和BFS(广度优先搜索)遍历图时,每个顶点都会被访问一次(时间复杂度O(n)O(n)O(n)),同时每条边也会被检查一次(时间复杂度O(e)O(e)O(e))。
两种算法的总操作次数是顶点访问次数与边检查次数的总和,因此时间复杂度均为O(n+e)O(n+e)O(n+e),适用于有向图和无向图的情况。

所以,选A,说人话:分别遍历点和边

T15

题目:由数字1,1,2,4,8,8所组成的不同的四位数的个数是( )

A 102
B 120
C 560
D 720

考试中,不知道就选C

答案为A
本题有4种情况,他们分别是无重复数字 A44A_4^4A44共24种含2个1(无8重复) C24×A23=6×6=36C_2^4 \times A_2^3=6 \times 6=36C24×A23=6×6=36含两个8(无1重复) C24×A23=36C_2^4 \times A_2^3=36C24×A23=36含两个1和两个8 C_2^4=6,综合为102种

二 阅读程序

第一大题

#include<iostream>
int main()
{int n, c;std::cin >> n >> c;long long sum = 0;int pre = 1000000000;for (int i = 0; i < n; ++i) {int a;std::cin >> a;if (pre > a) {pre = a;}sum += pre;pre += c;}std::cout << sum << "\n";
}
T16

题目:当输入的a全部相等时,程序输出的结果一定等于n×an \times an×a

我当时考试中填的是正确

当时也没模拟完整

考试后模拟的样例:

input

5 3
3 3 3 3 3

output

45

事实声明,本题为×

第二大题

bool c[max_size][max_size] = {false};
void draw(int size, int x, int y)
{if (size == 1){c[x][y] = true;}else{int half = size / 2;draw(half, x + half, y);draw(half, x, y + half);draw(half, x + half, y + half);}
}
void print(int n)
{int length = 1 << n;draw(length, 0, 0);for (int x = 0; x < length; ++x){for (int y = 0; y < length; ++y){if (c[x][y])std::cout << '*';elsestd::cout << '.';}std::cout << "\n";}
}

这个代码怎么不完整

T20

题目:在draw的过程中,左上角的四分之一子区域始终不会被绘制

当时我模拟是模拟到这里了

模拟图.jpg

然后也懒得模拟了

如果按照这样的规律下去,那么左上角四分之一区域是会被绘制的

也不懂

估计是我题目理解问题

T24

题目:print(n)的时间复杂度为( )

A O(n)O(n)O(n)
B O(2n)O(2^n)O(2n)
C O(3n)O(3^n)O(3n)
D O(4n)O(4^n)O(4n)

答案为D,考试我选了B

但是deepseek的观点是选C,所以,我们需要注意:[font color=“#FF0000”]内容由 AI 生成,请仔细甄别[/font]

T27

题目:程序输出的图形,是沿( )对称图形

A 对角线
B 水平中轴
C 垂直中轴
D 中心镜像

考试我选择C,因为从上面那张目前模拟的地方,选C确实对于模拟没错

but

为什么错了???

也许是模拟错了吧

其实还有另外一张模拟了一张的草稿纸,但被我当作lese扔进垃圾桶了

第三大题

bool valid = true;
std::vector<int> adj[max_node];
bool instack[max_node] = {false};
bool visited[max_node] = {false};
void dfs(int node)
{instack[node] = true;visited[node] = true;for (auto after : adj[node]) {if (!visited[after]) {visited[after] = true;dfs(after);} else if (instack[after]) {valid = false;}}instack[node] = false;
}
int main()
{int n, m;std::cin >> n >> m;for (int i = 0; i < m; i++){int x, y;std::cin >> x >> y;adj[x].push_back(y);}for (int i = 1; i <= n; i++){if (!visited[i]){dfs(i);}}if (valid) {std::cout << "Valid\n";} else {std::cout << "Invalid\n";}
}
T34

题目:当输入节点数n=105n=10^5n=105,边数m=2×105m=2 \times 10^5m=2×105时,程序是否能高效运行( )

A 能,O(n+m)O(n+m)O(n+m)复杂度
B 不能,O(nm)O(nm)O(nm)复杂度
C 不能,递归栈溢出
D 取决于图的具体结构

说实话,我考试中都不知道这个代码在干什么,全都是瞎懵的,选择题全队,选择题错了一个,即这个,考试懵了C,因为不知道就选C

让我们的deepseek来分析这道题

???deepseek选C???

小声os:@deepseek: look in my eyes . tell me ? why ? why baby ? why ?

三 完善程序

第一大题

S了
但是让deepseek根据题目写代码

#include <iostream>
#include <vector>
using namespace std;const int MAX_N = 1005;
const int MAX_M = 1005;int main() {int n, N;cin >> n >> N;vector<string> P(N);for (int i = 0; i < N; ++i) {cin >> P[i];}int Q;cin >> Q;// 前缀和数组,sum_black[i][j] 表示从(0,0)到(i-1,j-1)的黑格数量vector<vector<int>> sum_black(n + 1, vector<int>(n + 1, 0));for (int i = 1; i <= n; ++i) {for (int j = 1; j <= n; ++j) {int pi = (i - 1) % N;int pj = (j - 1) % N;int black = (P[pi][pj] == 'B') ? 1 : 0;sum_black[i][j] = sum_black[i - 1][j] + sum_black[i][j - 1] - sum_black[i - 1][j - 1] + black;}}while (Q--) {int A, B, C, D;cin >> A >> B >> C >> D;// 计算矩形区域内的黑格数量,注意坐标从0开始,转换为前缀和的1-based索引int black_count = sum_black[C + 1][D + 1] - sum_black[A][D + 1] - sum_black[C + 1][B] + sum_black[A][B];cout << black_count << endl;}return 0;
}

也不知道对不对

第二大题

#include<iostream>
int len(int n) {int length = 0;while (n > 0) {n /= 10;length++;}return length;
}
void print(int n, char ch) {while (n-- > 0) std::cout << ch;
}
int main() {int a, b;char dummy;std::cin >> a >> dummy >> b;int p = a;int q = b;while (a != 0 and b != 0) {if (a >= b) a %= b;else b %= a;}int gcd;if (____(1)____) gcd = b;else gcd = a;int i = p / q;p %= q;p /= gcd;q /= gcd;if (____(2)____) {std::cout << i << "\n";} else {int i_len = len(i);int p_len = len(p);int q_len = len(q);____(3)____;std::cout << ____(4)____ << "\n";if (i != 0) std::cout << i;____(5)____;std::cout << "\n";____(6)____;std::cout << ____(7)____ << "\n";}
}
T44

考试的时候眼瞎了,看错位置了,这个是要输出杠的

致谢


文章转载自:

http://Ll8yneFX.wgqtj.cn
http://WfKMXC0r.wgqtj.cn
http://96PsnMUf.wgqtj.cn
http://fKYpUVOJ.wgqtj.cn
http://hTqgETFK.wgqtj.cn
http://7uI8oRLn.wgqtj.cn
http://cMDQEkPM.wgqtj.cn
http://K4kqTPCQ.wgqtj.cn
http://jyO7L0eX.wgqtj.cn
http://GbLyLYpN.wgqtj.cn
http://wFGuSBUT.wgqtj.cn
http://7p15hnMK.wgqtj.cn
http://GinqZU1E.wgqtj.cn
http://TfDFY5xJ.wgqtj.cn
http://k6Rx7wNm.wgqtj.cn
http://KPFMZgzK.wgqtj.cn
http://QcXRBEkg.wgqtj.cn
http://9vG9zZgE.wgqtj.cn
http://6mYv0pzG.wgqtj.cn
http://jIe8d0W1.wgqtj.cn
http://hDpetKyT.wgqtj.cn
http://Cb40P5uF.wgqtj.cn
http://BUbLij2Y.wgqtj.cn
http://eQ3jMrSm.wgqtj.cn
http://4wOKFnUd.wgqtj.cn
http://LZCOAfVT.wgqtj.cn
http://W9iu1LT1.wgqtj.cn
http://9G96OkBY.wgqtj.cn
http://bct3tzQA.wgqtj.cn
http://G29MqHzv.wgqtj.cn
http://www.dtcms.com/a/381365.html

相关文章:

  • RDB/AOF------Redis两大持久化方法
  • 【图解】idea中快速查找maven冲突
  • Dubbo SPI机制
  • 《Linux 基础指令实战:新手入门的命令行操作核心教程(第一篇)》
  • 【开题答辩全过程】以 “饭否”食材搭配指南小程序的设计与实现为例,包含答辩的问题和答案
  • RabbitMQ 在实际开发中的应用场景与实现方案
  • 有没有什么办法能批量去除很多个PDF文件的水印
  • JavaScript 内存管理与常见泄漏排查(闭包、DOM 引用、定时器、全局变量)
  • ArkAnalyzer源码初步分析I——分析ts项目流程
  • Linux_基础指令(二)
  • 什么是子网?
  • 【前端】【utils】高效文件下载技术解析
  • FastAPI 中内省函数 inspect.signature() 作用
  • 【Linux】Linux进程概念(上)
  • 前端vue使用canvas封装图片标注功能,鼠标画矩形框,标注文字 包含下载标注之后的图片
  • 水库运行综合管理平台
  • langgraph astream使用详解
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(31):文法運用第9回3+(考え方11)
  • shell脚本练习:文件检查与拷贝
  • 书籍成长书籍文字#创业付费杂志《财新周刊》2025最新合集 更33期
  • 《AI游戏开发中的隐性困境:从战斗策略失效到音效错位的深度破局》
  • UVM寄存器模型与通道机制
  • 一个简单的GPU压力测试脚本-python版
  • Linux x86 stability和coredump
  • Claude-Flow AI协同开发:从“CTO”到“人机共生体”的AI协同开发
  • CPR_code
  • 【连接器专题】FPC连接器基础及连接器选型指南
  • 精准、可控、高一致性:谷歌Nano Banana正在终结AI“抽卡”时代
  • 操作系统实时性的影响因素总结
  • 国际避税方法有哪些