这道题的思路就是 有以下情况

运输的时候我假设一直由同一个人进行递送校园卡

1、当校园卡数目小于或等于人数的时候,一次就可以所有人进入校门了,故可以直接输出为" 1 "

2、当校园卡数目小于或者等于一的时候,只有一个人能进入,或者所有人都不能进入 ,故直接输出为" -1 "

3、以上情况都没有时,用temp来记录一共几个来回,n=a-b的意思是除去第一次送入校园的人数 因为每一次只能帮助b-1个人进入校园(此时的b-1已经除开一直递送校园卡那一个人),因此用n/m记录一共有多少个来回,到最后,如果n%m!=0时,表明还有一小部分人没有进入校园,故temp在加一,多加一个来回,然后到最后计算所需要的时间,temp*2为来回需要的次数,在+1表示加上第一次送入的所需要的时间

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int i,a,b,temp,time,n,m;
    cin>>i;
    while(i--)
    {
        temp=0;
        cin>>a>>b;
        n=a-b;
        m=b-1;
        if(b>=a) 
        {
            printf("1\n");
            continue;
        }
        if(b<=1)
        {
            printf("-1\n");
            continue;
        }
        temp=n/m;
        if(n%m!=0) temp++;
        time=temp*2+1;
        printf("%d\n",time);
    }
}