这题属于签到题,没做出来很不应该(太菜了)! 题意翻译一下就是每个来回可以进去(m-1)人,每次需要2个单位时间(m个人进去和1个带校园卡的靓仔出来),最后一次可以进m个人,此时只需要1个单位时间(因为带校园卡的靓仔不需要再出来了)。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin >> t;
while (t--)
{
int n, m;
cin >> n >> m;
if (m == 1) //特判只有1个人带校园卡的情况
{
if (n == 1) //注意!!!
cout << "1";
else //其他都是不可行的方案
cout << "-1";
cout << '\n';
}
else
{
n -= m; //先把最后一次进去的人数减去,剩余的人就是每次传递校园卡进去的人
long long ans = 1; //最后一次进去只需1单位时间
if (n >= 0)
{
int len = ceil(1.0 * n / (m - 1)); // ceil 上取整
ans += len * 2;
cout << ans << '\n';
}
}
}
return 0;
}