【HDOJ 1009】 CRB and String

【HDOJ 1009】 CRB and String

每组两个串s t 只由小写字母组成 问从s能不能变成t

改变的操作为选一个字符 在后面加上一个与所选字符不同的字符

这种操作可以做无数次 问能不能达t

首先s能到t的首要条件是 对于任意字母 s中出现的次数小于等于t中出现的次数

其次仔细想想可以发现 满足上一条件后 只有存在连续的字符才有可能无法到达

而连续的字符如果在串中(不在串首 可不断在其前的字符后累加该字符

因此只需看t开头有没有连续的字符 如果与s开头连续的字符为相同字符 并且长度小于等于s开头的连续字符长度

即为Yes

不满足以上两个条件 即为No

代码如下:

#include <iostream>
#include <cstring>
#include <cstdio>

using namespace std;

using namespace std;

char s[100005],t[100005];
int sz[26],tz[26];

int main()
{
    int T,i,j,lens,lent;
    bool f;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%s %s",s,t);
        if(s[0] != t[0])
        {
            puts("No");
            continue;
        }

        memset(sz,0,sizeof(sz));
        memset(tz,0,sizeof(tz));
        lens = lent = 0;
        f = 0;
        for(i = 0; s[i]; ++i)
        {
            sz[s[i]-'a']++;
            if(!f && (!i || s[i] == s[i-1])) lens++;
            else f = 1;
        }

        f = 0;
        for(i = 0; t[i]; ++i)
        {
            tz[t[i]-'a']++;
            if(!f && (!i || t[i] == t[i-1])) lent++;
            else f = 1;
        }

        if(t[0] == s[0] && lens >= lent)
        {
            for(i = 0; i < 26; ++i)
            {
                if(sz[i] > tz[i]) break;
            }
            if(i == 26) puts("Yes");
            else puts("No");
        }
        else puts("No");
    }
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-28 21:52:36

【HDOJ 1009】 CRB and String的相关文章

【HDOJ 1005】 CRB and His Birthday

[HDOJ 1005] CRB and His Birthday 背包 商场卖东西 没件物品有对应的价值 同时由于超市老板跟你是好绩优...每买一件物品给你a个糖果 同时如果购买某物品 会给对应的b种糖果 即买x个i 可以得到ai*x+bi个糖果 问怎么能得到最多糖果 开始是想开个bool标记每个状态某糖果买每买 还有在该状态是否第一次买某种糖果 写着写着写不好了-- 后来突然想到 可以把每件物品拆开 由于每种物品只赠送一次b 可以把赠b的物品作为"特卖品" 其余为正常送a的物品 这样

【HDOJ 5407】 CRB and Candies (大犇推导

pid=5407">[HDOJ 5407] CRB and Candies 赛后看这题题解仅仅有满眼的迷茫------ g(N) = LCM(C(N,0),C(N,1),...,C(N,N)) f(n) =\ LCM(1, 2, ..., n)f(n) = LCM(1,2,...,n), the fact g(n) =\ f(n+1) / (n+1)g(n) = f(n+1)/(n+1) f(n)\ =\ LCM(1, 2, ..., n)f(1) = 1 If n =p^{k}n =p?

【HDOJ 4763】 Theme Section (KMP+strstr)

[HDOJ 4763] Theme Section Theme Section Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1999    Accepted Submission(s): 947 Problem Description It's time for music! A lot of popular musicians a

【HDOJ 5838】Mountain(局部极小值)

[HDOJ 5838]Mountain(局部极小值) Mountain Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Problem Description Zhu found a map which is a N * M rectangular grid.Each cell has a height and there are no two cells which have

【HDOJ 4768】 Flyer (等差数列+二分)

[HDOJ 4768] Flyer (等差数列+二分) Flyer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2022    Accepted Submission(s): 743 Problem Description The new semester begins! Different kinds of student soc

【HDOJ 5379】 Mahjong tree

[HDOJ 5379] Mahjong tree 往一颗树上标号 要求同一父亲节点的节点们标号连续 同一子树的节点们标号连续 问一共有几种标法 画了一画 发现标号有二叉树的感觉 初始标号1~n 根结点1可以标1或n 否则其他情况无法让下面的子树满足各自连续并且该根的儿子节点都要连续 根结点下的节点平分其他标号 画一画可以发现 每个根下最多有两颗子树 否则无法满足条件 并且两颗子树占据剩余标号的左右两边 中间夹的必须是叶子 这样才能满足该根下的儿子节点标号连续 若根下只有一颗子树 同样可以选择占剩

【HDOJ 5384】Danganronpa

[HDOJ 5384]Danganronpa AC自动机...当时感觉用字典树 标神也往自动机想来着..手太生加上时间紧迫也没敲--回来一看题解什么AB同时建自动机...顿时愣了 什么叫同时建= =问了问财神说普通自动机...B串单建 立马疯了--这不就是模板题么... B串建自动机 A串枚举查询 写完兴冲冲1T--立马想法优化 建fail时压缩一下 查询时直接累计 不再循环找fail 171ms...第二个自动机的题..距上次蛮久了 这次一复习 感觉印象差不多有了 代码(模板)如下: #inc

【HDU 1009】FatMouse&#39; Trade

题 Description FatMouse prepared M pounds of cat food, ready to trade with the cats guarding the warehouse containing his favorite food, JavaBean. The warehouse has N rooms. The i-th room contains J[i] pounds of JavaBeans and requires F[i] pounds of c

【HDOJ 5834】Magic boy Bi Luo with his excited tree(树型DP)

[HDOJ 5834]Magic boy Bi Luo with his excited tree(树型DP) Magic boy Bi Luo with his excited tree Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Problem Description Bi Luo is a magic boy, he also has a migic tree,