题意:
思路:
题目比较坑,题中数据保证了这些数据能够组成最小值到最大值中的任意的数,因此,直接计算出这些数的最大最小值就行了。
代码:
#include <bits/stdc++.h>
using namespace std;
int a[1005];
char b[1005];
int main()
{
int n,k;
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&k);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
getchar();
for(int i=0;i<n;i++)
cin>>b[i];
int sum1=0,sum2=0;
for(int i=0;i<n;i++)
{
if(b[i]=='L')sum1+=a[i];
else if(b[i]=='D')sum2-=fabs(a[i]);
else{sum1+=fabs(a[i]);sum2-=fabs(a[i]);}
}
// cout<<sum1<<" "<<sum2;
if(k>sum1||k<sum2)
printf("no\n");
else
printf("yes\n");
}
return 0;
}