1 条题解
-
0
解题思路
- 输入处理:
- 使用
while循环读取输入的m和n,当m为 0 时结束输入。 - 对于每组输入,使用
memset函数将visit数组初始化为false,该数组用于标记某些位置是否被访问。 - 读取
n个整数t,将visit[t]标记为true,表示这些位置被访问。
- 使用
- 计算初始值:
- 计算
p = n * m,它是遍历的起始值。 - 初始化
num为 0,用于记录当前的计数;初始化res为 0,用于记录num的最大值。
- 计算
- 遍历并更新计数:
- 从
p开始递减遍历到 0。 - 如果
visit[p]为true,则num加 1,并更新res为res和num中的较大值。 - 如果
visit[p]为false,则num减 1。
- 从
- 输出结果:
- 对于每组输入,输出对应的结果,格式为
"Case X: Y",其中X是案例编号,Y是res的值。案例编号nc会在每次输出后加 1。
- 对于每组输入,输出对应的结果,格式为
#include<iostream> #include<cstring> #include<algorithm> using namespace std; int n,m; bool visit[10000]; int main(){ int nc = 1; while(cin>>m>>n&&m){ memset(visit,0,sizeof(visit)); for(int i = 0; i < n; i++){ int t; cin >> t; visit[t] = 1; } int p = n*m, num = 0, res = 0; while(p>=0){ if(visit[p]) num++, res = max(res,num); else num--; p--; } cout << "Case " << nc++ << ": " << res << endl; } } - 输入处理:
- 1
信息
- ID
- 324
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者