炸鸡块君的高中回忆
题目链接:
https://ac.nowcoder.com/acm/contest/23106/E
题目描述:
炸鸡块君在高中时,学校规定进出校门必须要刷校园卡,否则禁止进入。
某一天,炸鸡块君和同学们一共n个人去学校附近玩耍,但回学校时他们发现只有m个人带了校园卡,于是他们想到了这样一个策略:先让m个人带校园卡进入学校,再派一个人带着所有m张校园卡出来,重复上述过程,直到所有人进入学校。
假设从外面进入学校和从校内出来到校外都需要花费一个单位的时间,求所有人都进入学校最少需要花费几个单位的时间。
解题思路:
每次可以进去(m-1)个人,每次进出一共需要2个单位时间,最后一次只需要1个单位时间。
代码如下:
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int n,m,t;
int ans=0;
cin>>t;
while(t--){
cin>>n>>m;
if(n<=m)
cout<<1<<endl;
else if(m==1)
cout<<-1<<endl;
else
{
ans=1+(n-m)/(m-1)+((n-m)%(m-1)!=0);
cout<<2*ans-1<<endl;
}
}
return 0;
}