说在前面
看到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;
}