标签:Lao int scanf 多校 laotui freopen 2020 联考 号点
Solution
可以发现合法的序列一定由若干个 \(l\),每对相邻的 \(l\) 中间至少夹一个 \(t\) 组成。而对于 \(Lao\),其第一个字符必须为 \(l\)。那么就容易建立出自动机。
对于 \(Lao\),从 \(1\) 号点开始转移;对于 \(Tui\),从 \(3\) 号点开始转移。如果没有转移边就一定不为合法的序列。还要特判一下字串是否包含 \(l\)。
#include<stdio.h>
#include<string.h>
#define N 10000007
int T,to[5][30];
char c[N];
int main(){
freopen("laotui.in","r",stdin);
freopen("laotui.out","w",stdout);
to[1]['l'-'a']=2,to[2]['t'-'a']=3;
to[3]['t'-'a']=3,to[4]['t'-'a']=3,to[3]['l'-'a']=4;
scanf("%d",&T);
while(T--){
scanf("%s",c+1);
int p1=1,p2=3,len=strlen(c+1);
bool tag=0;
for(int i=1;i<=len;i++){
tag|=(c[i]=='l');
int v=c[i]-'a';
p1=to[p1][v],p2=to[p2][v];
}
printf("%d %d\n",tag&(p1!=0),tag&(p2!=0));
}
}
Tips
要读入一亿个字符,注意卡常。
标签:Lao,int,scanf,多校,laotui,freopen,2020,联考,号点 来源: https://www.cnblogs.com/wwlwQWQ/p/14043969.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。