AT4524 Vacation

说在前面

看到tgt大佬的视频然后切掉的。

简单口胡

(dp_{i,j})表示到第(i)天且第(i)天干第(j)(j in {0,1,2})的最大值,得:

[dp_{i,j} = max_{x in mathcal{J} = {0,1,2} ackslash j} {dp_{i - 1,x}} + ... ]

...代表要加的那个数((a_i,b_i,c_i)

# include <bits/stdc++.h>
using namespace std;
const int N = 105;
int t;
int n,d;
int a[N];
int main(void)
{
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d",&n,&d);
        bool flag = 0;
        for(int i = 1; i <= n; i++)
        {
            scanf("%d",&a[i]);
            if(a[i] > d) flag = 1;
        }
        if(!flag)
        {
            printf("YES
");
            continue;
        }
        sort(a + 1, a + n + 1);
        if(a[1] + a[2] <= d)
        {
            printf("YES
");
        }
        else
        {
            printf("NO
");
        }
    }
    return 0;
}
原文地址:https://www.cnblogs.com/luyiming123blog/p/14403736.html