说在前面
看到tgt大佬的视频然后切掉的。
简单口胡
设\(dp_{i,j}\)表示到第\(i\)天且第\(i\)天干第\(j\)项\(j \in \{0,1,2\}\)的最大值,得:
\[dp_{i,j} = \max_{x \in \mathcal{J} = \{0,1,2\} \backslash 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\n");
continue;
}
sort(a + 1, a + n + 1);
if(a[1] + a[2] <= d)
{
printf("YES\n");
}
else
{
printf("NO\n");
}
}
return 0;
}