WA的是TEST 1 和 2
题目描述
时间:1s 空间:256M
题目描述
老六和老七都是有名的美食家,你则是有名的大厨,你的任务是想办法让他们尽可能地多吃你做的菜。
一开始,老六和老七的开心度为0,如果某位美食家喜欢这道菜,那他的开心度+1,如果不喜欢,那他的开心度-1.
你一道道地上菜,你上一盘,老六和老七尝一盘,一旦有某个美食家开心度 < 0,那你就不能继续上菜了。
你提前准备好了 a + b + c + d 盘菜,代表:
- 老六喜欢,老七也喜欢的菜有a盘;
- 老六喜欢,老七不喜欢的菜有b盘;
- 老六不喜欢,老七喜欢的菜有c盘;
- 老六不喜欢,老七不喜欢的菜有d盘;
可以知道上菜顺序不一样,最终吃的盘数也可能不一样。请输出在最优的安排下你最多能上几盘菜。
输入格式
第一行一个整数 t 表示数据组数。
对于每组数据,一行四个整数 a b c d。
输出格式
对于每组数据一个整数表示你最多能上几盘菜。
样例输入
4
5 0 0 0
0 0 0 5
2 5 10 6
3 0 0 7
样例输出
5
1
15
7
约定
1≤�≤104 1≤t≤104
0≤�1,�2,�3,�4≤1080≤a1,a2,a3,a4≤108
�1+�2+�3+�4≥1a1+a2+a3+a4≥1
#include <bits/stdc++.h>
using namespace std;
int t,a,b,c,d,ans,e,f,k1,k2;
int main(){
cin>>t;
while(t--){
cin>>a>>b>>c>>d;
if(a==0){
cout<<1<<endl;
continue;
}
k1=a,k2=a,ans=a;
int da=min(b,c);
b-=da;
c-=da;
ans+=2*da;
if(b>k1){
ans+=k1;
k1=0;
}else{
ans+=b;
k1-=b;
}
if(c>k2){
ans+=k2;
k2=0;
}else{
ans+=c;
k2-=c;
}
if(min(k1,k2)>d){
cout<<ans+d<<endl;
}else{
cout<<ans+min(k1,k2)+1<<endl;
}
}
return 0;
}