问题 6118 --最多能坐多少人

6118: 最多能坐多少人★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 30  解决: 15
[提交][状态][命题人:]

题目描述

有编号位1n的共n人作为嘉宾参加一个电视节目,他们将坐在从左到右依次编号为1m的一排座位上。这n个人来了,他们将按照进入场地的顺序依次坐下,每个人占据座位的方式共分为以下三种:

方式1:坐在最左边已经坐着的人的左边空座位上,或者如果1号座位已经有人坐了,那么就直接退场。如果目前没有人坐(即m个座位都是空的),请坐在m号座位。

方式2:坐在已经坐下的最右边的人右边的座位上,或者如果m号座位已经有人坐了,那么就直接退出。如果当前没有人坐(即m个座位都是空的),请坐在1号座位上。

方式3:请坐在第xi号座位上。如果这个座位有人坐,请直接退场。

如果我们可以让n个人以任意顺序依次进入节目场地,现在我们想知道最多有多少人可以有座位坐下?

输入

        第一行一个整数t(1≤t≤2e4):测试用例数;

        接下来共2t行,每个测试用例两行:

        第一行共两个整数nm1≤n,m≤1e5):人数和座位数;

        第二行为n个整数x1,x2,……,xn (-2≤xi≤m, xi≠0)xi表示第i个人进入场地占据座位的方式;

        1)如果xi=-1,则选择方式1占据座位;

        2)如果xi=-2,则选择方式2占据座位;

        3)如果xi>0,则选择方式3占据座位;



输出

输出共t行,每个测试用例一行一个整数:场地中最多落座的人数;
样例输入
Copy
10
3 10
5 5 5
4 6
1 -2 -2 1
5 7
-1 -1 4 -2 -2
6 7
5 -2 -2 -2 -2 -2
6 6
-1 1 4 5 -1 4
6 8
-1 -1 -1 3 -1 -2
6 7
5 -1 -2 -2 -2 -2
3 1
-2 -2 1
2 5
5 -2
1 2
-1
样例输出
Copy
1
3
5
6
5
5
5
1
2
1

提示

在第一个测试用例中,所有人都将选择5号座位,所以最多只能坐1人;

在第二个测试用例中,可以将嘉宾按照1234的顺序依次进场,这样只有最后一个人无法挑选到座位直接退场,其他3人都可以找到座位,所以最多可以坐3人;

在第三个测试用例中,嘉宾可以按照以下顺序进场:

3—4—5—1—2 即:

13号嘉宾首先进场,找到4号座位坐下,座位图如下:

       - - - 3 - - - (其中:- 表示空座位,3表示4号座位上坐的是第3号嘉宾)

       2)接下来,4号嘉宾进场,按照方式2找到5号座位坐下,座位图如下:

       - - - 3 4 - -

       3)接下来,5号嘉宾进场,按照方式2找到6号座位坐下,座位图如下:

       - - - 3 4 5 –

       4)接下来,1号嘉宾进场,按照方式1找到3号座位坐下,座位图如下:

       - - 1 3 4 5 –

       5)最后,2号嘉宾进场,按照方式1找到2号座位坐下,座位图如下:

- 2 1 3 4 5 –

所以,按上述进场方式,5位嘉宾都可以找到自己的座位坐下,最多可以坐5人;

来源

 

[提交][状态]