2017第八次多校联合hdu6140(阅读题)

来源:互联网 发布:java验证码过期怎么做 编辑:程序博客网 时间:2024/06/05 20:59

题目

题意:就是给你一些数,如果他对应的是N那他可以加也可以减,如果是L就是加,如果是D就是减。

题解:(出题人好强啊。。。愣是用这么长的题面和语言陷阱干死了好多人。。。。)(比赛时候一直在怼1002,看了题解才知道原来这不是我能做的题,好想哭啊。。ORZ)。
就是按他给的所有的值扩大区间,最后看看k在不在区间里就好了。
具体多项式的理解:大佬博客
(但是也学到东西了,原来用%c读入的时候前面加一个空格就可以避免出错了。学到老活到老。)

#include<bits/stdc++.h>using namespace std;const int maxn=1e3+10;int a[maxn];char b[maxn];int main(){    int t;    scanf("%d",&t);    while(t--)    {        int n,k;        scanf("%d %d",&n,&k);        for(int i=0; i<n; i++)            scanf("%d",&a[i]);        for(int i=0; i<n; i++)            scanf(" %c",&b[i]);        int left=0,right=0;        for(int i=0; i<n; i++)        {            if(b[i]=='N')left-=a[i],right+=a[i];            if(b[i]=='L')right+=a[i];            if(b[i]=='D')left-=a[i];        }        if(k>=0)        {            if(k<=right)                printf("yes\n");            else printf("no\n");        }        else        {            if(k>=left)                printf("yes\n");            else printf("no\n");        }    }}
原创粉丝点击