[cerc2012][Gym100624C]20181013
[cerc2012][Gym100624C]20181013
题意:用元素符号表示字符串
题解:签到题 简单dp
难点在于把元素符号都改成小写qaq
1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<iostream> 5 #include<algorithm> 6 using namespace std; 7 8 const int N=500010,M=120; 9 10 char p[114][10]={"h","he","li","be","b","c","n","o","f","ne","na","mg","al","si","p","s","cl","ar","k","ca","sc","ti","v","cr","mn","fe","co","ni","cu","zn","ga","ge","as","se","br","kr","rb","sr","y","zr","nb","mo","tc","ru","rh","pd","ag","cd","in","sn","sb","te","i","xe","cs","ba","hf","ta","w","re","os","ir","pt","au","hg","tl","pb","bi","po","at","rn","fr","ra","rf","db","sg","bh","hs","mt","ds","rg","cn","fl","lv","la","ce","pr","nd","pm","sm","eu","gd","tb","dy","ho","er","tm","yb","lu","ac","th","pa","u","np","pu","am","cm","bk","cf","es","fm","md","no","lr"}; 11 char s[N]; 12 int len[M]; 13 bool f[N]; 14 15 int main() 16 { 17 //freopen("a.in","r",stdin); 18 int pl=114; 19 for(int i=0;i<pl;i++) len[i]=strlen(p[i]); 20 int T; 21 scanf("%d",&T); 22 while(T--) 23 { 24 scanf("%s",s+1); 25 int sl=strlen(s+1); 26 memset(f,0,sizeof(f)); 27 f[0]=1; 28 for(int i=1;i<=sl;i++) 29 { 30 for(int j=0;j<pl;j++) 31 { 32 if(len[j]==1) 33 f[i]=(f[i] || (f[i-1] && s[i]==p[j][0])); 34 else if(i>=2) 35 f[i]=(f[i] || (f[i-2] && s[i-1]==p[j][0] && s[i]==p[j][1])); 36 } 37 } 38 if(f[sl]) printf("YES\n"); 39 else printf("NO\n"); 40 } 41 return 0; 42 }