Stand-up Comedian

发布于:2024-05-20 ⋅ 阅读:(42) ⋅ 点赞:(0)

Stand-up Comedian

题面翻译

题目背景

Eve 是个单口相声新手。她的第一场表演聚集了总计 2 2 2 个观众:Alice 和 Bob。

Eve 准备了 a 1 + a 2 + a 3 + a 4 a_1+a_2+a_3+a_4 a1+a2+a3+a4 个相声表演节目。 a i a_i ai 表示第 i i i 类相声的数目,每类的的特征如下:

  1. Alice 和 Bob 都喜欢这类相声。

  2. Alice 喜欢,Bob 不喜欢。

  3. Bob 喜欢,Alice 不喜欢。

  4. Alice 和 Bob 都不喜欢这类相声。

一开始,两位观众的心情都为 0 0 0

当一位观众听到他喜欢的相声表演时心情会 1 1 1,当听到的是自己不喜欢的相声时,心情减 1

当某位观众心情严格小于 0 0 0 时,这位观众会离场。只要有一位这样的观众离场,Eve 会特别伤心并且结束整个表演。若演完了所有节目,也会结束表演。

求某种安排表演顺序的方式,使得 Eve 在结束表演前能表演的节目最多。输出最多能表演的节目数。

译者注:若演完某个节目有观众退场,这个节目也算在总数之中

输入

第一行一个整数 t ( 1 ≤ t ≤ 1 0 4 ) t(1\le t\le 10^4) t(1t104) 表示数据组数。

对于每族数据,一行四个整数 a 1 , a 2 , a 3 , a 4 ( 0 ≤ a 1 , a 2 , a 3 , a 4 ; a 1 + a 2 + a 3 + a 4 ≥ 1 ) a_1,a_2,a_3,a_4(0\le a_1,a_2,a_3,a_4;a_1+a_2+a_3+a_4\ge 1) a1,a2,a3,a4(0a1,a2,a3,a4;a1+a2+a3+a41),每类相声节目的数目。

输出

对于每组数据一个整数表示 Eve 在结束表演前最多能表演的节目数。

样例 #1

样例输入 #1

4
5 0 0 0
0 0 0 5
2 5 10 6
3 0 0 7

样例输出 #1

5
1
15
7

1.都加一
2.一个加一
3.一个减一
4.都减一

所以我们分析,第一种可以无脑加.23的情况会取最小然后乘以2因为相同的部分即小的部分会彼此抵消,第三部要看看a+1abs(b-c)+d最小值

#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
int a,b,c,d,t,num,x,y;
int main()
{
    cin>>t;
    while(t--){
        num=0;
        cin>>a>>b>>c>>d;//读入
        if(a==0){//特判
            cout<<1<<endl;
            continue;
        }
        num+=a;//无脑加
        num+=min(b,c)*2;//第二部分
        num+=min(a+1,abs(b-c)+d);//第三部分
        cout<<num<<endl;
    }
    return 0;
}