博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
codeforces #313 div1 B
阅读量:4624 次
发布时间:2019-06-09

本文共 1042 字,大约阅读时间需要 3 分钟。

模拟判定就可以了

判定字符串是否相等用hash来判断

QAQ 值得一提的是一开始我交的时候T了

结果我将递归的顺序调整了一下就A了

(并不知道为什么

#include
#include
#include
#include
#include
using namespace std;typedef unsigned long long LL;const int maxn=200010;const int x=13331;int n;char s[maxn];char p[maxn];LL xp[maxn],hs[maxn],hp[maxn];bool cmp(int a,int b,int c,int d){ return hs[a]-hs[b+1]*xp[b-a+1]==hp[c]-hp[d+1]*xp[d-c+1];}bool Solve(int a,int b,int c,int d){ if(cmp(a,b,c,d))return true; if((b-a+1)&1)return false; int e=(a+b)>>1; int f=(c+d)>>1; if(Solve(a,e,f+1,d)&&Solve(e+1,b,c,f))return true; if(Solve(a,e,c,f)&&Solve(e+1,b,f+1,d))return true; return false;}int main(){ scanf("%s",s+1);scanf("%s",p+1); n=strlen(s+1); xp[0]=1; for(int i=1;i<=n;++i)xp[i]=xp[i-1]*x; hs[n+1]=0;hp[n+1]=0; for(int i=n;i>=1;--i){ hs[i]=hs[i+1]*x+s[i]-'a'; hp[i]=hp[i+1]*x+p[i]-'a'; } if(Solve(1,n,1,n))printf("YES\n"); else printf("NO\n"); return 0;}

  

转载于:https://www.cnblogs.com/joyouth/p/5371895.html

你可能感兴趣的文章
系统自带的粒子系统
查看>>
Laravel 框架的主要版本
查看>>
pandas学习笔记 - 常见的数据处理方式
查看>>
云监控中的告警
查看>>
大题的简单解答
查看>>
CSS3复选框动画
查看>>
Base64.java 工具类
查看>>
ExtJS遮罩层Ext.loadMask
查看>>
ArcPy开发教程2-管理地图文档1
查看>>
过滤器的使用
查看>>
软件测试
查看>>
Js 提交 form 表单
查看>>
Response.Status http协议状态代码
查看>>
BZOJ4925 城市规划
查看>>
Bootstrap 辅助类
查看>>
[]和{},类的简写
查看>>
二分算法(折半算法)详解
查看>>
掌握 需求过程阅读笔记04
查看>>
JS判断手机浏览器
查看>>
@Autowired和@Resource的区别
查看>>