Codeforces Round #313 (Div. 1) B. Equivalent Strings DFS暴力
2015-07-23 00:55
639 查看
B. Equivalent Strings
Time Limit: 20 SecMemory Limit: 256 MB
题目连接
http://codeforces.com/contest/559/problem/BDescription
Today on a lecture about strings Gerald learned a new definition of string equivalency. Two strings a and b of equal length are calledequivalent in one of the two cases:They are equal.
If we split string a into two halves of the same size a1 and a2, and string b into two halves of the same size b1 and b2, then one of the following is correct:
a1 is equivalent to b1, and a2 is equivalent to b2
a1 is equivalent to b2, and a2 is equivalent to b1
As a home task, the teacher gave two strings to his students and asked to determine if they are equivalent.
Gerald has already completed this home task. Now it's your turn!
[b]Input[/b]
The first two lines of the input contain two strings given by the teacher. Each of them has the length from 1 to 200 000 and consists of lowercase English letters. The strings have the same length.
[b]Output[/b]
Print "YES" (without the quotes), if these two strings are equivalent, and "NO" (without the quotes) otherwise.
[b]Sample Input[/b]
aaba
abaa
[b]Sample Output[/b]
YES
HINT
[b]题意[/b]
判断俩字符串是否相似,相似的条件如下:
a1+a2=A,a1和a2都是A的一半
b1+b2=B,同理
如果A,B相等,那么相似
如果A的长度为偶数{
如果a1与b1,a2与b2相似或者a1与b2,b1与a2相似
那么A,B相似
}
否则不相似
[b]题解:[/b]
就如同题目讲的一样,傻逼暴力DFS就好了
不要想多了
[b]代码[/b]
#include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<iostream> #include<algorithm> using namespace std; const int MAXN=200005; char A[MAXN],B[MAXN]; bool cmp(char x[],char y[],int len) { //printf("%d %d\n",x-A,y-B); bool isok=1; for(int i=0;i<len;i++) if(x[i]!=y[i])isok=0; return isok; } bool equ(char x[],char y[],int len) { //printf("%d %d %d\n",x-A,y-B,len); if(cmp(x,y,len))return 1; if(len%2==0) return (equ(x,y+len/2,len/2)&&equ(x+len/2,y,len/2)) ||(equ(x,y,len/2)&&equ(x+len/2,y+len/2,len/2)); return 0; } int main() { scanf("%s%s",A,B); int len=strlen(A); printf("%s\n",equ(A,B,len) ? "YES" : "NO"); return 0; }
相关文章推荐
- uva 11235 - Frequent values
- DuiLib介绍及其消息处理剖析
- UIAlertView自带password输入框
- 百度Ueditor uParse功能Bug,生成全局CSS: li,影响全局样式, 造成网页其它部分显示混乱解决方案
- easyui-combobox 多选框编辑
- 关于Android Stuido 打jar, aar 和使用aar
- UIViewController的生命周期及iOS程序执行顺序
- 2015 Multi-University Training Contest 1 OO’s Sequence hdu5288
- UIImageView 个人学习总结
- 交互设计的流程
- UI5 如何修改默认的style
- Ubuntu 14.04开启root账号,禁用Guest账号
- Unique Binary Search Trees
- UI5的语言问题
- MySQL - Incorrect string value: for column 'name' at row 1
- Android显示系统之View与SurfaceView更新屏幕的区别.对于View.则是在UI主线程中更新画面.SurfaceView更新屏幕,是在非UI线程(主线程)中实现SurfaceHolde
- EasyUI DataGrid可编辑单元格
- EasyUI DataGrid可编辑单元格
- EasyUI DataGrid可编辑单元格
- iOS开发-UIRefreshControl下拉刷新