topcoder SRM 576 Div2 1000

00:00/00:00

1000:CharacterBoard2

题意:

给你一个字符组成的矩阵,这是从一个大矩阵里面截取出来的,大矩阵的最左上角坐标为(0,0),然后大矩阵是由一个连续长串经过不停的循环一行一行得排列出来的,已知这个长串的长度小于这个矩阵的宽度。。。然后问你符合条件的长串有几种。。。

分析:

已知这个长串的宽度是10000,然后这个小矩阵的大小也是50*50,然后我们可以直接暴力枚举长度然后暴力验证就好了。。。

代码:


int ans[10010]; int CharacterBoard2::countGenerators(vector <string> fragment, int W, int i0, int j0) { LL anss=0; for(int cas=1;cas<=W;cas++) { memset(ans,0,sizeof(ans)); int flag=0; int nowx=0+i0; int nowy=0+j0; int siz=fragment.size(); for(int j=0;j<siz;j++) { string now=fragment[j]; for(int i=nowy;i<nowy+now.size();i++) { int zz=nowx*W+i; zz%=cas; if(ans[zz]!=now[i-nowy]&&ans[zz]!=0) {flag=1;break;} else ans[zz]=now[i-nowy]; } if(flag==1) break; nowx++; } if(flag==0) { LL ret=1; for(int i=0;i<cas;i++) if(ans[i]==0) ret=((ret*26)%mod+mod)%mod; anss=((anss+ret)%mod+mod)%mod; } } return anss; }

关于“topcoder SRM 576 Div2 1000”我的1个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注