(一)思路:
要使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=2
z1,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=2
y2,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;
}