这道题就是一个纯模拟题,用朴素的模拟循环一百遍就行
$Tips$ :
-
结构体表示更加方便
-
$if$语句中两个语句位置不要写反不然会$WA$
(实践出真知) -
$work$数组中由于第$i$个操作是第三的整数倍时$i$模$3$为$0$,所以要把第三个操作放在$0$位上
综上所述本题的时间复杂度就是O(常数)级别的,可以轻松AC此题
代码:
#include<iostream>
using namespace std;
struct bucket{
int c, m;
};
bucket buc[10];
int work[3][3] = {{0,3,1},{0,1,2},{0,2,3}};
int main(){
for(int i = 1;i <= 3;i ++){
cin >> buc[i].c >> buc[i].m;
}
for(int i = 1;i <= 100;i ++){
if(buc[work[i % 3][1]].m > (buc[work[i % 3][2]].c - buc[work[i % 3][2]].m)){
buc[work[i % 3][1]].m = buc[work[i % 3][1]].m - (buc[work[i % 3][2]].c - buc[work[i % 3][2]].m) ;
buc[work[i % 3][2]].m = buc[work[i % 3][2]].c;
}
else{
buc[work[i % 3][2]].m += buc[work[i % 3][1]].m;
buc[work[i % 3][1]].m = 0;
}
}
for(int i = 1;i <= 3;i ++){
cout << buc[i].m <<endl;
}
}
点个赞再走呗