整体来说,这次的题目还是不错的,只是有几题居然是原题,着实有点让人心醉...
A.偷吃糖果
Time Limit: 1000Ms
Memory Limit: 65536KB
Description
小鱼喜欢吃糖果。
他有两盒糖果,两盒糖果分别仅由小写字母组成的字符串s和字符串t构成。当中'a'到'z'表示详细的某种糖果类别。他原本打算送给他喜欢的女生,可是要送给女孩子的话两盒糖果不能有区别(即字符串s和t全然同样)。所以,他决定偷吃几块,他吃糖果的策略是每次选出一盒糖果中两个连续的同种类别的糖果,然后吃掉当中一块。该策略能够使用多次。
比如一盒糖果是'rrrjj',他能够把这盒糖果变成'rrjj'或者'rrrj'。如今你要告诉小鱼。经过他多次偷吃糖果之后。两盒糖果是否能送给他喜欢的女孩子。假设能够输出'Yes',假设不行输出'No'。
解题思路:此题思路还是简单的,由于题目明白吃糖果的策略为每次选出一盒糖果中两个连续的同种类别的糖果,然后吃掉当中一块,所以对于每一种糖果,仅仅要一開始有,那么终于必然至少会留下一块,那么为了便于处理,我们能够将两个字符串简化,同种类别糖果仅仅留下一块,以便于比較
比如第一组例子,rrrjj与rrrj,简化后的效果为rj与rj,非常明显符合
/*Sherlock and Watson and Adler*/ #pragma comment(linker, "/STACK:1024000000,1024000000") #include<stdio.h> #include<string.h> #include<stdlib.h> #include<queue> #include<stack> #include<math.h> #include<vector> #include<map> #include<deque> #include<set> #include<cmath> #include<complex> #include<string> #include<algorithm> #include<iostream> #define exp 1e-10 using namespace std; const int N = 1000 + 10; const int M = 40; const int inf = 100000000; const int mod = 2009; char a[N],b[N]; int main() { int t,i,k; scanf("%d",&t); while(t--) { scanf("%s%s",a,b); k=0; a[k++]=a[0]; for(i=1;a[i]!='