CF1236A题解
题意简述
题目传送门
有 a,b,c 三堆石子,现在有两种方案可以取石子:
- 第一堆取一个石子,第二堆取两个石子。
- 第二堆取一个石子,第三堆取两个石子。
分析
这题不难,直接模拟即可。因为两种方案都会涉及到第二堆,
所以我们优先考虑第二种方案,这样我们就能通过尽可能少的
次数取第二堆,从而尽可能多的取到石子。
所以我们先用 while 模拟第二种方案,直到不能再取了。然后再模拟第一种方案,也是在不能取的时候结束计算。
代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,a,b,c,ans;
cin>>n;
while(n--){
cin>>a>>b>>c;
ans=0; //清零
while(1){ //第二种方案优先考虑
if(b-1>=0&&c-2>=0) ans+=3,b-=1,c-=2;
else break; //不满足条件就退出
}
while(1){
if(a-1>=0&&b-2>=0) ans+=3,a-=1,b-=2;
else break;
}
cout<<ans<<endl;
}
}
完美AC!
这是本人第一篇题解,希望大佬多多支持!

浙公网安备 33010602011771号