题解:P11044 [蓝桥杯 2024 省 Java B] 食堂

· · 题解

本道题可以看作一道大模拟。

我们要先考虑放完的情况,即:

然后考虑只剩一个空位的情况: 桌 $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; } ```