3021. Alice 和 Bob 玩鲜花游戏
题目描述
Alice 和 Bob 在一个长满鲜花的环形草地玩一个回合制游戏。环形的草地上有一些鲜花,Alice 到 Bob 之间顺时针有 x
朵鲜花,逆时针有 y
朵鲜花。
游戏过程如下:
- Alice 先行动。
- 每一次行动中,当前玩家必须选择顺时针或者逆时针,然后在这个方向上摘一朵鲜花。
- 一次行动结束后,如果所有鲜花都被摘完了,那么 当前 玩家抓住对手并赢得游戏的胜利。
给你两个整数 n
和 m
,你的任务是求出满足以下条件的所有 (x, y)
对:
- 按照上述规则,Alice 必须赢得游戏。
- Alice 顺时针方向上的鲜花数目
x
必须在区间[1,n]
之间。 - Alice 逆时针方向上的鲜花数目
y
必须在区间[1,m]
之间。
请你返回满足题目描述的数对 (x, y)
的数目。
示例 1:
输入:n = 3, m = 2 输出:3 解释:以下数对满足题目要求:(1,2) ,(3,2) ,(2,1) 。
示例 2:
输入:n = 1, m = 1 输出:0 解释:没有数对满足题目要求。
提示:
1 <= n, m <= 105
解法
方法一:数学
根据题目描述,每一次行动,玩家都会选择顺时针或者逆时针方向,然后摘一朵鲜花。由于 Alice 先行动,因此当 \(x + y\) 为奇数时,Alice 一定会赢得游戏。
因此,鲜花数目 \(x\) 和 \(y\) 满足以下条件:
- \(x + y\) 为奇数;
- \(1 \le x \le n\);
- \(1 \le y \le m\)。
若 \(x\) 为奇数,\(y\) 一定为偶数。此时 \(x\) 的取值个数为 \(\lceil \frac{n}{2} \rceil\),\(y\) 的取值个数为 \(\lfloor \frac{m}{2} \rfloor\),因此满足条件的数对个数为 \(\lceil \frac{n}{2} \rceil \times \lfloor \frac{m}{2} \rfloor\)。
若 \(x\) 为偶数,\(y\) 一定为奇数。此时 \(x\) 的取值个数为 \(\lfloor \frac{n}{2} \rfloor\),\(y\) 的取值个数为 \(\lceil \frac{m}{2} \rceil\),因此满足条件的数对个数为 \(\lfloor \frac{n}{2} \rfloor \times \lceil \frac{m}{2} \rceil\)。
因此,满足条件的数对个数为 \(\lceil \frac{n}{2} \rceil \times \lfloor \frac{m}{2} \rfloor + \lfloor \frac{n}{2} \rfloor \times \lceil \frac{m}{2} \rceil\),即 \(\lfloor \frac{n + 1}{2} \rfloor \times \lfloor \frac{m}{2} \rfloor + \lfloor \frac{n}{2} \rfloor \times \lfloor \frac{m + 1}{2} \rfloor\)。
时间复杂度 \(O(1)\),空间复杂度 \(O(1)\)。
1 2 3 4 5 6 7 |
|
1 2 3 4 5 6 7 8 9 |
|
1 2 3 4 5 6 7 8 9 10 |
|
1 2 3 4 5 |
|
1 2 3 4 5 |
|
方法二:数学(优化)
方法一得出的结果为 \(\lfloor \frac{n + 1}{2} \rfloor \times \lfloor \frac{m}{2} \rfloor + \lfloor \frac{n}{2} \rfloor \times \lfloor \frac{m + 1}{2} \rfloor\)。
如果 \(n\) 和 \(m\) 都是奇数,那么结果为 \(\frac{n + 1}{2} \times \frac{m - 1}{2} + \frac{n - 1}{2} \times \frac{m + 1}{2}\),即 \(\frac{n \times m - 1}{2}\)。
如果 \(n\) 和 \(m\) 都是偶数,那么结果为 \(\frac{n}{2} \times \frac{m}{2} + \frac{n}{2} \times \frac{m}{2}\),即 \(\frac{n \times m}{2}\)。
如果 \(n\) 是奇数,且 \(m\) 是偶数,那么结果为 \(\frac{n + 1}{2} \times \frac{m}{2} + \frac{n - 1}{2} \times \frac{m}{2}\),即 \(\frac{n \times m}{2}\)。
如果 \(n\) 是偶数,且 \(m\) 是奇数,那么结果为 \(\frac{n}{2} \times \frac{m - 1}{2} + \frac{n}{2} \times \frac{m + 1}{2}\),即 \(\frac{n \times m}{2}\)。
上面四种情况可以合并为 \(\lfloor \frac{n \times m}{2} \rfloor\)。
时间复杂度 \(O(1)\),空间复杂度 \(O(1)\)。
1 2 3 |
|
1 2 3 4 5 |
|
1 2 3 4 5 6 |
|
1 2 3 |
|
1 2 3 |
|