HDU 6140 Hybrid Crystals(思维)

来源:互联网 发布:武汉精神卫生中心 知乎 编辑:程序博客网 时间:2024/05/29 06:58

【题目链接】
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;  }