(一)思路:
要使c中之和最大,这时我们发现当2与1结合时是c中元素最大的值,而1与2结合是c中元素最小的值,所以要将1与2的结合尽可能减少。所以:
1.先对2与1的结合情况进行讨论
2.在1的基础上,我们尽量用1与0、1结合,0、2与2结合。在其前提下,如果满足a中1有剩余,b中2有剩余,那么这时两者数量会相等,减去2乘余下的数量,为此时c中元素之和最大值。在此条件之外,就是2与1结合多少,2结合数量(即为c元素之和的最大值)。
(二)代码:
#include<stdio.h>
int main()
{
    int t,sum=0;
    while(scanf("%d",&t)!=EOF)
    {
        while(t--)
        {
            int x1,y1,z1;
            int x2,y2,z2;
            scanf("%d%d%d",&x1,&y1,&z1);
            scanf("%d%d%d",&x2,&y2,&z2);
            if(z1<=y2)
            {
                sum=2z1,y2-=z1,z1=0;
                if(y1-x2-y2>0&&z2-x1-z1>0)
                {
                    y1-=x2+y2;
                    z2-=x1+y1;
                    sum-=2y1;
                    printf("%d\n",sum);
                }
                else
                {
                    printf("%d\n",sum);
                }
            }
            else
            {
                sum=2y2,z1-=y2,y2=0;
                if(y1-x2-y2>0&&z2-x1-z1>0)
                {
                    y1-=x2+y2;
                    z2-=x1+y1;
                    sum-=2*y1;
                    printf("%d\n",sum);
                }
                else
                {
                    printf("%d\n",sum);
                }
            }
        }
    }
    return 0;
} 

 京公网安备 11010502036488号
京公网安备 11010502036488号