Joysticks
题意
【题目描述】 朋友们正要去玩游戏机。他们有两个游戏机,却只有一个充电器。最开始第一个游戏机有a1%的电,第二个游戏机有a2%的电。你只能在每分钟的最开始将一个游戏机接上充电器。每一分钟每个游戏机会消耗2%的电(如果没有接上充电器)或者充上1%的电(如果接上了充电器)。
当两个游戏机都有电时游戏才能继续。因此,如果在某一分钟的开始某个游戏机只有1%的电,它必须接上充电器,否则游戏会停止。如果某个游戏机完全没电(它的电量变为0),游戏也会停下。
试确定该游戏能够持续的最长时间。禁止暂停游戏,即在每一分钟两个游戏机都应该在使用。允许将游戏机充电到超过100%的电量。
思路
- 先根据题目输入几个数,就定义几个数
- 要分两种情况(等于1和不等于1),等于1直接输出0;不等于1继续分情况
坑点
- 需要数学思维去理解,去思考。
算法一:for循环和if判断
时间复杂度
- 输出大小: 1.83193492889404 MiB
- 编译时间: 0.59s
实现步骤
- 定义两个数,输入,分两种情况(等于1和不等于1)
- 大的if判断是等于1和不等于1的情况,for循环里的if判断是游戏机的电量的判断与赋值,当游戏机的数量都小于等于0时,结束,输出结果。
- 终止程序
代码
#include<iostream>
#include<algorithm>
#include<stdio.h>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
if(a==1&&b==1)
{
cout<<"0";
return 0;
}
for(int i=1; ;i++)
{
if(a>b)
{
a-=2;
b+=1;
}
else
{
b-=2;
a+=1;
}
if(a<=0||b<=0)
{
cout<<i;
return 0;
}
}
return 0;
}
总结
需要一点思路,有点类似贪心问题。