hdu 6140
Posted 早知如此绊人心,何如当初莫相识。
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu 6140相关的知识,希望对你有一定的参考价值。
题意:给出n,k,n个数,有对应的N,L,D,初始值为0,问是否可以选择一些数,使其等于k,N为该数可加可减,L为加,D为减,第一个值是确定的
思路:我们最开始得到-1,0,1,即[-1,1]这区间任意数可达到,对于[a,b]这区间,如果加上一个正数,那么[a,b+正数]这区间任意一个数也可以得到,负数同理
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 5 struct node{ 6 int x; 7 char s[2]; 8 }a[1003]; 9 10 int main(){ 11 int t; 12 cin>>t; 13 while(t--){ 14 int n,k; 15 scanf("%d%d",&n,&k); 16 for(int i=1;i<=n;i++) scanf("%d",&a[i].x); 17 for(int i=1;i<=n;i++) scanf("%s",a[i].s); 18 int l=0,r=0; 19 for(int i=1;i<=n;i++){ 20 char c=a[i].s[0]; 21 if(c==‘N‘){ 22 l-=a[i].x; 23 r+=a[i].x; 24 } 25 else if(c==‘L‘) { 26 r+=a[i].x; 27 } 28 else l-=a[i].x; 29 } 30 if(k<=r&&k>=l) cout<<"yes"<<endl; 31 else cout<<"no"<<endl; 32 } 33 }
以上是关于hdu 6140的主要内容,如果未能解决你的问题,请参考以下文章
HDU4057 Rescue the Rabbit(AC自动机+状压DP)