贪心,模拟,构造(HDU 5414,CRB and String)

来源:互联网 发布:广州数据恢复 价格 编辑:程序博客网 时间:2024/05/14 03:38

WA了好久。。

No写成了NO

Yes写成了YES


读题:没问题

算法:光是正确构造出来一个结果是远远不够的,我们更应该考虑在构造的过程中所使用的算法(比如贪心)是否会使得后面的构造失败。

实现:没问题

细节:No写成了NO,Yes写成了YES


代码

#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;const int maxl = 100010;char s[maxl],t[maxl];int sl,tl;int sk,tk;int solve(){    scanf("%s %s",s,t);    if(s[0]!=t[0]) return 0*puts("No");    sl=strlen(s);    tl=strlen(t);    int sb=1;    while(sb<min(sl,tl)&&s[sb]==t[sb]&&t[sb]==t[sb-1]) sb++;    tk=tl-1;    for(sk=sl-1;sk>=sb;sk--)    {        while(tk>=sb&&t[tk]!=s[sk]) tk--;        if(tk<sb) return 0*puts("No");        tk--;    }    if(tk>=sb&&t[sb]==t[sb-1]) return 0*puts("No");    return 0*puts("Yes");}int main(){    int T;    scanf("%d",&T);    while(T--) solve();    return 0;}