CF2156A Pizza Time

题目描述

Hao 和 Alex 是好朋友。在一起赢得编程大赛后,他们获得了一个巨大的披萨作为奖励。 一开始,他们有 $n$ 块披萨。每一天,都会重复以下过程: - 如果剩余的披萨不超过 $2$ 块,Alex 会把所有剩下的披萨都吃掉。 - 否则,设当前披萨数量为 $m$($m \ge 3$)。Hao 将这些披萨分为三组,组数分别为 $m_1$、$m_2$、$m_3$,满足: $$ m_1 + m_2 + m_3 = m,\quad 1 \le m_1 \le m_2 \le m_3 $$ 然后: - Hao 吃掉 $m_1$ 块(最小的那组)。 - Alex 吃掉 $m_2$ 块(中间的那组)。 - 剩余的 $m_3$ 块(最大的一组)留到第二天继续吃。 你的任务是,计算在每次分组都最优选择的情况下,Hao 能吃到的最大披萨块数总和。

输入格式

每个测试点包含多个测试用例。第一行包含测试用例数 $t$($1 \le t \le 500$)。测试用例的描述如下。 每个测试用例仅有一行,包含一个整数 $n$($3 \le n \le 10^9$),表示初始披萨块数。 注意所有测试用例的 $n$ 之和没有额外限制。

输出格式

对于每组测试用例,输出一个单独的整数,表示 Hao 能吃到的最大披萨块数。

说明/提示

在第一个测试用例中,Hao 最多可以吃 $3$ 块披萨,具体分配如下: 1. 分为 $m_1=2$、$m_2=3$、$m_3=3$,Hao 吃 $2$ 块,Alex 吃 $3$ 块,剩下 $3$ 块留到第二天。 2. 分为 $m_1=1$、$m_2=1$、$m_3=1$,Hao 吃 $1$ 块,Alex 吃 $1$ 块,剩下 $1$ 块留到第二天。 3. 只剩 $1$ 块,由 Alex 吃掉。 在第二个测试用例中,Hao 最多可以吃 $1$ 块披萨: 1. 分为 $m_1=1$、$m_2=1$、$m_3=2$,Hao 吃 $1$ 块,Alex 吃 $1$ 块,剩下 $2$ 块留到第二天。 2. 只剩 $2$ 块,由 Alex 吃掉。 由 ChatGPT 5 翻译