2017.10.25模拟 c journey

网友投稿 195 2022-09-16

2017.10.25模拟 c journey

​​ 自己写的渣渣代码 只有20分 留作纪念吧

#include#include#define N 110#define M 110000#define inf 0x3f3f3f3fstruct node{ int st,ed;}data[N];char b[M<<1],a[N];int cnt,ans,na,nb,f[M<<1][N];inline void solve(int now){ int last=inf; int len=data[now].ed-data[now].st+1; for (int i=nb*2-len+1;i;--i){ int st=data[now].st;bool flag=1; for (int j=0;jna) break;ed=f[ed][now]; last=data[now++].ed+1;ed+=data[now-1].ed-data[now-1].st+1; } if (ed-i<=nb) ans++; } printf("%d",ans); //for (int i=1;i<=cnt;++i) printf("%d %d\n",data[i].st,data[i].ed); return 0;}

思路就是暴力模拟 我认为此题至少省选难度吧可能我太弱了 要想的细节实在太多 想不清

#include#include#define N 110#define M 110000#define inf 0x3f3f3f3fstruct node{ int st,ed;}data[N];char b[M<<1],a[N];int cnt,ans,na,nb,f[M<<1][N];inline void solve(int now){ int last=inf; int len=data[now].ed-data[now].st+1; for (int i=nb*2-len;i>=1;--i){ int st=data[now].st;bool flag=1; for (int j=0;j=inf) return 0; for (int i=2;ied) return 0; } if (a[na]!='*'){ if (f[ed-data[cnt].ed+data[cnt].st][cnt]!=ed-data[cnt].ed+data[cnt].st) return 0; if (pos<=ed-data[cnt].ed+data[cnt].st) return 1;return 0; }if (f[pos][cnt]+data[cnt].ed-data[cnt].st<=ed) return 1;return 0;}int main(){ //freopen("journey.in","r",stdin); scanf("%s%s",a+1,b+1); na=strlen(a+1),nb=strlen(b+1);memset(f,0x3f,sizeof(f)); for (int i=1;i<=nb;++i) b[i+nb]=b[i]; for (int i=1,last=1;i<=na;i=last){ while (a[i]=='*'&&i<=na) ++i;last=i;if (i==na+1) break; data[++cnt].st=last; while (a[i]!='*'&&i<=na) ++i;last=i;data[cnt].ed=i-1;solve(cnt); } /*for (int i=1;i<=nb*2;++i){ for (int j=1;j<=cnt;++j){ printf("%d,f[i][j]); }printf("asdfasdf\n"); }*/ for (int i=1;i<=nb;++i) if (judge(i)) ans++; printf("%d",ans); //for (int i=1;i<=cnt;++i) printf("%d %d\n",data[i].st,data[i].ed); return 0;}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:codeforces 876B Divisiblity of Differences
下一篇:luogu 2827 NOIP2016蚯蚓
相关文章

 发表评论

暂时没有评论,来抢沙发吧~