您的位置:首页 > 其它

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

2017-08-17 20:59 369 查看
题目

题意:就是给你一些数,如果他对应的是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");
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: