【题目链接】
http://acm.hdu.edu.cn/showproblem.php?pid=6140
题目意思
给定一些数,有的增加能量,有的减少能量,有的可以增加或者减少能量。问你k个能量能否够组成(L为加,D为减,N为可加可减),(最重要的是这个能量值居然是连续的,明明说了可以偷懒只看后面的,但是这个居然是在上面体现的)
解题思路
所以题目就转化成了,初始区间【-1,1】.当假如一个N性水晶的时候,R+a[i],L-a[i]。
是一个L性水晶的时候,R + a[i],当是一个D性水晶的时候,R-a[i].最后看k在不在区间内。
代码部分
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
const int maxn = 1003;
int a[maxn];
int letter[maxn];
int main()
{
int t,n,k;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&k);
for(int i = 1; i <= n; i++)
scanf("%d",&a[i]);
int left = 0,right = 0;
for(int i = 1; i <= n; i++)
{
char ch;
scanf(" %c",&ch);
if(ch == 'N')
{
left = left-a[i];
right = right+a[i];
}
else if(ch == 'L')
{
right = right+a[i];
}
else
{
left = left-a[i];
}
}
if(left<=k && right>=k)
printf("yes\n");
else
printf("no\n");
}
return 0;
}