题解:P11044 [蓝桥杯 2024 省 Java B] 食堂
yechenguo
·
·
题解
本道题可以看作一道大模拟。
我们要先考虑放完的情况,即:
然后考虑只剩一个空位的情况:
桌 $6$ 用 $2+3$ 的人,
桌 $4$ 用 $3$ 的人,
最后大致是个补空:
除了一个 $2$ 人寝室可以合用一个 $6$ 人桌外,为一个寝室用一个桌。
最后上代码!!!
```cpp
#include<bits/stdc++.h>
using namespace std;
int t,a2,a3,a4,b4,b6;
int main()
{
cin>>t;
while(t--)
{
int cnt=0;
cin>>a2>>a3>>a4>>b4>>b6;
while(b4>0&&a4>0)//4人寝室用4人桌
{
a4--;b4--;
cnt+=4;
}
while(b6>0&&a2>0&&a4>0)//2人寝室和4人寝室用6人桌
{
a4--;a2--;b6--;
cnt+=6;
}
while(b4>0&&a2-1>0)//两个2人寝室用4人桌
{
a2-=2;b4--;
cnt+=4;
}
while(b6>0&&a3-1>0)//两个3人寝室用6人桌
{
a3-=2;b6--;
cnt+=6;
}
while(b6>0&&a2-2>0)//三个2人寝室用6人桌
{
a2-=3;b6--;
cnt+=6;
}
while(b4>0&&a3>0)//3人寝室用4人桌
{
a3--;b4--;
cnt+=3;
}
while(b6>0&&a3>0&&a2>0)//2人寝室和3人寝室用6人桌
{
a3--;a2--;b6--;
cnt+=5;
}
while(b6>0&&a2-1>0)//两个2人寝室用6人桌
{
a2-=2;b6--;
cnt+=4;
}
while(b4>0&&a2>0)//2人寝室用4人桌
{
a2--;b4--;
cnt+=2;
}
while(b6>0&&a4>0)//4人寝室用6人桌
{
a4--;b6--;
cnt+=4;
}
while(b6>0&&a3>0)//3人寝室用6人桌
{
a3--;b6--;
cnt+=3;
}
while(b6>0&&a2>0)//2人寝室用6人桌
{
a2--;b6--;
cnt+=2;
}
cout<<cnt<<endl;
}
return 0;
}
```