2017多校第8场 HDU 6138 Fleet of the Eternal Throne 思维,暴力

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6138

题意:给了初始区间[-1,1],然后有一些操作,可以r加上一个数,l减掉一个数,或者同时操作,问最后能不能凑出k。

解法:由于开始是-1,所以l,r能延伸到的任何区间都可以凑出来,直接判断即可。

 

#include <bits/stdc++.h>
using namespace std;
int a[1010];
int main()
{
    int T,n,k;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d%d", &n,&k);
        int l=-1,r=1;
        for(int i=1; i<=n; i++) scanf("%d", &a[i]);
        for(int i=1; i<=n; i++){
            char op[3];
            scanf("%s", op);
            if(op[0]=='L'){
                r+=a[i];
            }
            if(op[0]=='N'){
                r+=a[i];
                l-=a[i];
            }
            if(op[0]=='D'){
                l-=a[i];
            }
        }
        if(k>=l&&k<=r) puts("yes");
        else puts("no");
    }
    return 0;
}

 

posted @ 2017-08-20 10:21  zxycoder  阅读(144)  评论(0编辑  收藏  举报