1 条题解

  • 0
    @ 2025-8-24 23:03:45

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar yechenguo
    ด้้้้้็้้้็็็็็้้้้้็็็็็้้้้้้็็็็็้้้้้็็็็็้้้้้้็็็็็้้้้้็็็็็้้้้้้็็็็็้้้้้็็็็็้้้้吼吼吼||支持互关(私)||清团杀关(误杀私)||成功被卡蓝勾线

    搬运于2025-08-24 23:03:45,当前版本为作者最后更新于2024-09-15 19:25:48,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


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

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

    6=2+46=2+46=3+36=3+36=2+2+26=2+2+24=44=44=2+24=2+2

    然后考虑只剩一个空位的情况:

    662+32+3 的人, 桌 4433 的人,

    最后大致是个补空:

    除了一个 22 人寝室可以合用一个 66 人桌外,为一个寝室用一个桌。

    最后上代码!!!

    #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;
    }
    
    • 1

    信息

    ID
    10685
    时间
    3000ms
    内存
    512MiB
    难度
    3
    标签
    递交数
    0
    已通过
    0
    上传者