先部分分,再进阶
先认清任务,再讨论算法
2025 CSP-J 第二轮 T2|座位
一、完整题目
题目编号:P14358 [CSP-J 2025] 座位(seat)
源程序文件:
输入文件:
时间限制:1.0 秒 内存限制:512 MiB
测试点:20 个,等分,每点 5 分
官方 C++ 编译选项:
源程序文件:
seat.cpp输入文件:
seat.in 输出文件:seat.out时间限制:1.0 秒 内存限制:512 MiB
测试点:20 个,等分,每点 5 分
官方 C++ 编译选项:
-O2 -std=c++14 -static题目描述
CSP-J 2025 第二轮正在进行。小 R 所在的考场共有 n × m 名考生,其中所有考生的 CSP-J 2025 第一轮成绩互不相同。所有 n × m 名考生将按照 CSP-J 2025 第一轮的成绩,由高到低蛇形分配座位,排列成 n 行 m 列。
具体地,设小 R 所在考场所有考生的成绩从高到低分别为:
s₁ > s₂ > … > sn×m
- 成绩为
s₁的考生坐第1列第1行; - 成绩为
s₂的考生坐第1列第2行; - ……
- 成绩为
sₙ的考生坐第1列第n行; - 成绩为
sₙ₊₁的考生坐第2列第n行; - ……
- 成绩为
s₂ₙ的考生坐第2列第1行; - 成绩为
s₂ₙ₊₁的考生坐第3列第1行,以此类推。
例如,若 n = 4,m = 5,20 名考生按成绩排名从高到低占据下图中的位置。格子里的数字是名次,不是成绩:
给定座位的行数 n、列数 m,以及所有考生的第一轮成绩 a₁, a₂, …, aₙₓₘ。其中 a₁ 是小 R 的成绩。请输出小 R 的座位是第几列第几行。
输入格式
从文件 seat.in 中读入数据。
输入第一行包含两个正整数 n, m,分别表示座位的行数与列数。
输入第二行包含 n × m 个正整数 a₁, a₂, …, aₙₓₘ,分别表示所有考生的成绩,其中 a₁ 为小 R 的成绩。
输出格式
输出到文件 seat.out 中。
输出一行两个正整数 c, r,表示小 R 的座位为第 c 列第 r 行。
样例 1
2 2
99 100 97 98
1 2
成绩从高到低为 100, 99, 98, 97。其中 99 排名第 2,位于第 1 列第 2 行。
样例 2
2 2
98 99 100 97
2 2
小 R 的成绩 98 排名第 3。第 2 列是从下往上排,因此座位为第 2 列第 2 行。
样例 3
3 3
94 95 96 97 98 99 100 93 92
3 1
数据范围与特殊性质
对于所有测试数据,保证:
1 ≤ n ≤ 10,1 ≤ m ≤ 10;- 对所有
1 ≤ i ≤ n × m,均有1 ≤ aᵢ ≤ 100; a₁, a₂, …, aₙₓₘ互不相同。
| 测试点编号 | n ≤ |
m ≤ |
特殊性质 |
|---|---|---|---|
| 1 | 1 | 1 | A、B |
| 2~3 | 1 | 10 | 无 |
| 4~5 | 10 | 1 | 无 |
| 6 | 2 | 2 | A |
| 7 | 2 | 2 | B |
| 8~9 | 2 | 2 | 无 |
| 10 | 2 | 10 | A |
| 11 | 2 | 10 | B |
| 12~14 | 2 | 10 | 无 |
| 15~17 | 10 | 2 | 无 |
| 18~20 | 10 | 10 | 无 |
- 特殊性质 A:对所有
1 ≤ i ≤ n × m,都有aᵢ = i。 - 特殊性质 B:对所有
1 ≤ i ≤ n × m,都有aᵢ = n × m - i + 1。
按测试点取并集,不把重叠分数相加
勾选已掌握的路线,观察它们共同覆盖哪些测试点。这里计算的是该卷条件下的理论覆盖分,不代表程序已经通过正式评测,也不对应任何一等奖分数线。
已掌握的解法
去重后覆盖0 / 100
实际提交时,须将已掌握的分支整合到同一份程序。勾选路线不会自动拼接代码。
测试点覆盖图
已覆盖未覆盖
查看原题评分依据
逐条看懂:性质、推导与完整代码
选择一条路线,查看它为什么成立,再进入同一算法的可视化与代码追踪。
选择得分路线
算法过程执行语句与图示同步
当前变量金色表示与上一步相比发生变化
已输出
尚未输出
0 / 0
键盘 ← → 单步,空格播放 / 暂停
执行记录(最近 8 步)
用边界检查:我真的读懂了吗?
先手算,再展开解释。带入演示时会核对当前路线的适用条件。