zoukankan      html  css  js  c++  java
  • HDU_5414 CRB and String 【字符串】

    一、题目

      CRB and String

    二、分析

      对于这题,读懂题意非常重要。

      题目的意思是在$s$的基础上,按题目中所描述的步骤,即在$s$中任意选择一个字符$c$,在这个字符后面添加一个不等于$c$的字符$d$。

      问最终能否由$s$按步骤变成$t$。

      理解了题意后,我们就可以推导几个基本结论:

      1 $s$肯定是$t$的字串。

      2 由于是在$s$的基础上进行添加的,那么,我们可以确定除了最前面相等的$k$个串是无法添加的,后面的串都可以添加出来。如果$t$前面由相等的$k$个串,易证:$s$前面也必须由$k$个相等的串,可以结合步骤的处理了过程画一下。

      满足上述两个条件则可以由$s o t$。

    三、AC代码

     1 #include <cstdio>
     2 #include <iostream>
     3 #include <cstring>
     4 
     5 using namespace std;
     6 const int maxn = 1e5 + 13;
     7 char s[maxn], t[maxn];
     8 
     9 bool solve()
    10 {
    11     int i, j;
    12     bool flag = true;
    13     for(i = j = 0; t[i] != ''; i++)
    14     {
    15         if(flag && t[i] == t[0] && s[j] != t[0])
    16             break;
    17         if(t[i] != t[0])
    18             flag = false;
    19         if(t[i] == s[j])
    20             j++;
    21     }
    22     if(s[j] == '' && t[i] == '')
    23         return true;
    24     else
    25         return false;
    26 }
    27 
    28 int main()
    29 {
    30     //freopen("input.txt", "r", stdin);
    31     int T;
    32     scanf("%d", &T);
    33     while(T--)
    34     {
    35         scanf("%s%s", &s, &t);
    36         if(solve())
    37         {
    38             puts("Yes");
    39         }
    40         else
    41         {
    42             puts("No");
    43         }
    44         
    45     }
    46     return 0;
    47 }
  • 相关阅读:
    每日博客
    每日博客
    预开发软件书 新
    laravel的优点
    Laravel 自己创建ServiceProvider 与 yansongda/laravel-pay 支付服务
    laradock
    普通静态绑定与后期静态绑定
    phpstorm和xdebug的配置 变量的单步调试
    phpstorm 连接远程docker
    docker php-fpm安装xdebug 与phpstorm firefox联调
  • 原文地址:https://www.cnblogs.com/dybala21/p/11218676.html
Copyright © 2011-2022 走看看