string

【描述】

给定两个字符串 s,t,其中 s 只包含小写字母以及*,t 只包含小写字母。

你可以进行任意多次操作,每次选择 s 中的一个*,将它修改为任意多个(可以是 0 个)它的前一个字符。问是否能将 s 修改为 t。

有多组数据。

【输入】

第一行一个整数 T 表示数据组数。

每组数据两行,第一行一个字符串 s,第二行一个字符串 t。

【输出】

每组数据输出一行,如果能将 s 修改为 t,输出 Yes,否则输出 No。

【输入样例】

2

a*

aaaa

a*

ab

【输出样例】

Yes

No

【子任务】

对于 20%的数据,|s|,|t|<=7。

对于 60%的数据,|s|,|t|<=300。

对于 100%的数据,T<=100,|s|,|t|<=30000。

考试的时候一开始看错题,发现的时候已经1h+了(AFO flag*1)。

于是一鼓作气删掉了我的代码。。。

写了一发之后发现过了大小样例(开心*1)。

于是去开T2了(AFO flag*2)。

结果惊奇的发现在lemon上我的程序爆零了。。。

于是得出结论:我少讨论了两种情况。。。

希望NOIP不考字符串模拟吧(NOIP–AFO flag*1)

代码:

#include<bits/stdc++.h>
#define N 300005
using namespace std;
int T,n,m,cnt1[N],cnt2[N];
char s[N],t[N],ss[N],tt[N];
bool is[N];
int main(){
    freopen("string.in","r",stdin);
    freopen("string.out","w",stdout);
    scanf("%d",&T);
    while(T--){
        scanf("%s%s",s+1,t+1);
        n=strlen(s+1),m=strlen(t+1);
        int tot1=0,tot2=0;
        for(int i=1;i<=n;++i){
            int cnt=1;
            bool zxy=false;
            char tmp=s[i];
            while(i!=n&&(s[i+1]=='*'||s[i+1]==tmp)){
                ++i;
                if(s[i]=='*')zxy=true;
                if(s[i]==tmp)++cnt;
            }
            cnt1[++tot1]=cnt,ss[tot1]=tmp,is[tot1]=zxy;
        }
        for(int i=1;i<=m;++i){
            int cnt=1;
            char tmp=t[i];
            while(i!=m&&t[i+1]==tmp)++i,++cnt;
            cnt2[++tot2]=cnt,tt[tot2]=tmp;
        }
        if(tot1!=tot2){puts("No");continue;}
        bool f=true;
        for(int i=1;i<=tot1;++i)if((ss[i]!=tt[i])||(cnt1[i]>cnt2[i])||(!is[i]&&(cnt1[i]!=cnt2[i]))){f=false;break;}
        if(f)puts("Yes");
        else puts("No");
    }
    return 0;
}

2018.08.22 NOIP模拟 string(模拟)的更多相关文章

  1. 2018.08.22 NOIP模拟 shop(lower_bound+前缀和预处理)

    Shop 有 n 种物品,第 i 种物品的价格为 vi,每天最多购买 xi 个. 有 m 天,第 i 天你有 wi 的钱,你会不停购买能买得起的最贵的物品.你需要求出你每天会购买多少个物品. [输入格 ...

  2. 2018.08.22 NOIP模拟 or(线段树)

    or [描述] 构造一个长度为 n 的非负整数序列 x,满足 m 个条件,第 i 个条件为x[li] | x[li+1] | - | x[ri]=pi. [输入] 第一行两个整数 n,m.接下来 m ...

  3. 【2018.11.22】CTSC2018(模拟赛!)

    太蠢了……$noip$ 后第一次模拟赛竟然是这样的……完全就是打击自信 / 降智…… 1. 假面 一道神仙概率 $dp$!第一次写…… 拿到题就发现血量 $m_i$ 的上限只有 $100$! 然后 $ ...

  4. 2018.9.22 NOIP模拟赛

    *注意:这套题目应版权方要求,不得公示题面. 从这里开始 Problem A 妹子 Problem B 旅程 Problem C 老大 因为业务水平下滑太严重,去和高一考NOIP模拟,sad... P ...

  5. 2018.08.30 NOIP模拟 wall(模拟)

    [问题描述] 万里长城是中国强大的标志,长城在古代的用途主要用于快速传递军事消息和抵御 外敌,在长城上的烽火台即可以作为藏兵的堡垒有可以来点燃狼烟传递消息. 现在有一段 万里长城,一共有 N 个烽火台 ...

  6. 2018.08.19 NOIP模拟 change(简单模拟)

    Change 题目背景 SOURCE:NOIP2015-SHY-10 题目描述 Alice 和 Bob 又聚在一起了!他们已经厌倦了取石子游戏,现在他们热衷于切题.于是,Alice 找到了一道题让 B ...

  7. 2018.08.30 NOIP模拟 graph(dfs序/树剖+线段树)

    [描述] 给你一个图,一共有 N 个点,2*N-2 条有向边. 边目录按两部分给出 1. 开始的 n-1 条边描述了一颗以 1 号点为根的生成树,即每个点都可以由 1 号点 到达. 2. 接下来的 N ...

  8. 2018.08.30 NOIP模拟 kfib(矩阵快速幂+exgcd)

    [输入] 一行两个整数 n P [输出] 从小到大输出可能的 k,若不存在,输出 None [样例输入 1] 5 5 [样例输出] 2 [样例解释] f[0] = 2 f[1] = 2 f[2] = ...

  9. 2018.08.29 NOIP模拟 movie(状压dp/随机化贪心)

    [描述] 小石头喜欢看电影,选择有 N 部电影可供选择,每一部电影会在一天的不同时段播 放.他希望连续看 L 分钟的电影.因为电影院是他家开的,所以他可以在一部电影播放过程中任何时间进入或退出,当然他 ...

随机推荐

  1. xe7 c++builder 日期时间头文件函数大全 date

    c++builde r时间日期函数大全,在头文件System.DateUtils.hpp,不过没有IncMonth,因为这个函数定义在System.SysUtils.hpp里头了,唉 date,dat ...

  2. C++实现ping功能<转>

    今天接到需求要实现ping的功能,然后网上查了一些资料,对网络编程的一些函数熟悉了一下,虽然还有一些细节不清楚,但是慢慢积累. 要实现这样的功能: 基础知识 ping的过程是向目的IP发送一个type ...

  3. python中for循环的用法

    Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串. 语法模式:for iterating_var in sequence: in 字面意思,从某个集合(列表等)里顺次取值 #遍 ...

  4. nginx HttpLuaModule

    http://wiki.nginx.org/HttpLuaModule#Directives Name ngx_lua - Embed the power of Lua into Nginx This ...

  5. webserive学习记录5-拦截器完成登陆校验

    说说cxf中的拦截器,可以分为系统拦截器(如日志拦截器)和自定义拦截器,也可以分为出拦截器和入拦截器,也可以分为服务器拦截器和客户端拦截器. 下面将实现一个可以进行登陆验证的拦截器,其中用户名作为方法 ...

  6. C++17尝鲜:在 if 和 switch 语句中进行初始化

    初始化语句 在C++17中,类似于 for 语句,在 if 和 switch 语句的判断条件之前也能加上初始化语句,语法形式如下: if (初始化语句; 条件) 语句 else 语句 switch ( ...

  7. 提交给mysql java驱动的优化下个版本要发布了^_^

    Unsubscribe from updates to this bug at: https://bugs.mysql.com/77681 Updated by: Daniel che chung S ...

  8. ArcGIS模型构建器案例学习-批量删除空要素类地理模型

    ArcGIS模型构建器案例学习笔记-批量删除空要素类地理模型 联系方式:谢老师,135-4855-4328,xiexiaokui@qq.com 目的:批量删除记录个数为0的矢量文件 优点:逻辑清晰,不 ...

  9. git 使用 添加分支

    http://jingyan.baidu.com/album/19192ad83ea879e53e5707ce.html?picindex=1 修改配置 git config --global use ...

  10. Linux就业技术指导(三):IDC机房解密

    1.1 IDC机房 1.1.1 带宽计算 带宽流量计算公式: 1 Byte=8bit,1KB=1024B,1MB=1024KB,1GB=1024MB B表示Byte,工业标准是1000. 一般我们家装 ...