智算之道-第二场初赛-题解

智算之道大赛 第二场初赛 题解


写在前面:

由于比赛时间有其他事情,故本场初赛在比赛时段只做了后面半个小时
题是做的后面的 第三场热身赛(第二场补题)
只追求AC,不追求速度(排名是同题比运时),所有没有细节方面的优化


A - 声控灯

题目描述

小明正在上楼梯,当小明逐渐接近某层楼的时候,这层楼的声控灯检测到小明的脚步声便会亮起来,当小明逐渐远去的时候,声控灯由于一段时间内没检测到声音又会灭下去。
由于小明是匀速上楼的,而且他的速度把控得刚刚好,脚步声的音量也十分恰当,使得灯的亮灭呈现出这样的状态:

  • 他当前所在的楼层的声控灯是亮起的;
  • 他即将抵达的下一层楼的声控灯是亮起的;
  • 他刚刚离开的那层楼的声控灯也是亮起的。


现在你站在楼的外面,通过窗户看到了灯的亮灭状态,请推断小明现在在几楼?

输入格式

每个测试点包含以下内容:
第一行给出一个整数 T T T,表示接下来给出 T T T组测试数据
每组测试数据包含两行
第一行包含两个数 n , m n,m n,m,表示这栋楼一共有 n n n,当前有 m m m盏灯是亮起的,而其余灯都是熄灭的
第二行包含 m m m个整数,这些整数按照从小到大的顺序给出亮起的灯的序号
保证输入数据是符合实际情况的

输出格式

输出 T T T行,每行包含一个数字,按照输入的顺序依次给出每组测试数据的答案。
如果答案不确定,请输出 − 1 -1 1

数据规模与约定

对于 50 % 50\% 50% 的数据, 1 ≤ T ≤ 10 , 3 ≤ n ≤ 100 , m = 3 1 \le T \le 10, 3 \le n \le 100, m = 3 1T10,3n100,m=3
对于 100 % 100\% 100% 的测试点, 1 ≤ T ≤ 1000 , 1 ≤ n ≤ 1 0 9 , 1 ≤ m ≤ 3 1 \le T \le 1000, 1 \le n \le 10^9, 1 \le m \le 3 1T1000,1n109,1m3

解题思路及分析

if出m的所有情况

  1. m == 1 只有一层楼,输入x 输出x
  2. m == 2 && n == 2 无法判断
  3. m == 2 && n != 2 a == 1为底层,b == n为顶层
  4. m == 3 输出中间一层

AC代码

#include <cstdio>
#include <iostream>
using namespace std;
int 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值