B. Email from Polycarp

题目链接:http://codeforces.com/contest/1185/problem/B

题目:

Methodius received an email from his friend Polycarp. However, Polycarp's keyboard is broken, so pressing a key on it once may cause the corresponding symbol to appear more than once (if you press a key on a regular keyboard, it prints exactly one symbol).

For example, as a result of typing the word "hello", the following words could be printed: "hello", "hhhhello", "hheeeellllooo", but the following could not be printed: "hell", "helo", "hhllllooo".

Note, that when you press a key, the corresponding symbol must appear (possibly, more than once). The keyboard is broken in a random manner, it means that pressing the same key you can get the different number of letters in the result.

For each word in the letter, Methodius has guessed what word Polycarp actually wanted to write, but he is not sure about it, so he asks you to help him.

You are given a list of pairs of words. For each pair, determine if the second word could be printed by typing the first one on Polycarp's keyboard.
Input

The first line of the input contains one integer n (1≤n≤105) — the number of pairs to check. Further input contains n descriptions of pairs.

The first line of each description contains a single non-empty word s
consisting of lowercase Latin letters. The second line of the description contains a single non-empty word t consisting of lowercase Latin letters. The lengths of both strings are not greater than 106

.

It is guaranteed that the total length of all words s
in the input is not greater than 106. Also, it is guaranteed that the total length of all words t in the input is not greater than 106

.
Output

Output n lines. In the i-th line for the i-th pair of words s and t print YES if the word t could be printed by typing the word s. Otherwise, print NO.
Examples
Input

4
hello
hello
hello
helloo
hello
hlllloo
hello
helo

Output

YES
YES
NO
NO

Input

5
aa
bb
codeforces
codeforce
polycarp
poolycarpp
aaaa
aaaab
abcdefghijklmnopqrstuvwxyz
zabcdefghijklmnopqrstuvwxyz

Output

NO
NO
YES
NO
NO

题意:

给两个字符串,看第一个字符串能否通过增加任意个任意该位置的字符,其他字符后移生成第二个字符串。

思路:

用结构体记录字符串的位置的字符和该字符的数目,只要两个字符串字符去重后该位置的字符相等且前一个字符串的该字符的数目小于等于第二个字符串即可

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
const int maxn=1e6+;
struct node{
char str;
int num;
}node[maxn],node1[maxn];
int main()
{
int n;
scanf("%d",&n);
char str[maxn],str1[maxn];
while(n--)
{
scanf("%s%s",str,str1);
int num=strlen(str);
int num1=strlen(str1);
int book=,book1=;
for(int i=;i<max(num,num1);i++)
{
node[i].num=;
node1[i].num=;
}
node[].str=str[];
node1[].str=str1[];
node[].num=;
node1[].num=;
for(int i=;i<num;i++)
{
if(str[i]==str[i-])
{
node[book].num++;
node[book].str = str[i];
}
else
{
book++;
node[book].num++;
node[book].str=str[i];
} }
for(int i=;i<num1;i++)
{
if(str1[i]==str1[i-])
{
node1[book1].num++;
node1[book1].str = str1[i];
}
else
{
book1++;
node1[book1].num++;
node1[book1].str=str1[i];
}
}
int sum=unique(str,str+num)-str;
int sum1=unique(str1,str1+num1)-str1;
if(num>num1)
puts("NO");
else if(sum!=sum1)
puts("NO");
else { bool flag = true;
for (int i = ; i < sum; i++) {
if (node[i].str != node1[i].str || node[i].num > node1[i].num) {
flag = false;
break;
} }
if (flag)
puts("YES");
else
puts("NO");
} } return ;
}
/*
4
polycarp
poolycarpp */

Codeforces Round #568 (Div. 2)B的更多相关文章

  1. Codeforces Round #568 (Div. 2)A

    A. Ropewalkers 题目链接:http://codeforces.com/contest/1185/problem/A 题目: Polycarp decided to relax on hi ...

  2. codeforces Round #568(Div.2)A B C

    有点菜,只写出了三道.活不多说,上题开干. A. Ropewalkers Polycarp decided to relax on his weekend and visited to the per ...

  3. Codeforces Round #568 (Div. 2) D. Extra Element

    链接: https://codeforces.com/contest/1185/problem/D 题意: A sequence a1,a2,-,ak is called an arithmetic ...

  4. Codeforces Round #568 (Div. 2) C2. Exam in BerSU (hard version)

    链接: https://codeforces.com/contest/1185/problem/C2 题意: The only difference between easy and hard ver ...

  5. Codeforces Round #568 (Div. 2) B. Email from Polycarp

    链接: https://codeforces.com/contest/1185/problem/B 题意: Methodius received an email from his friend Po ...

  6. Codeforces Round #568 (Div. 2) A.Ropewalkers

    链接: https://codeforces.com/contest/1185/problem/A 题意: Polycarp decided to relax on his weekend and v ...

  7. Codeforces Round #568 (Div. 2) G1. Playlist for Polycarp (easy version) (状压dp)

    题目:http://codeforces.com/contest/1185/problem/G1 题意:给你n给选项,每个选项有个类型和价值,让你选择一个序列,价值和为m,要求连续的不能有两个相同的类 ...

  8. Codeforces Round #568 Div. 2

    没有找到这场div3被改成div2的理由. A:签到. #include<bits/stdc++.h> using namespace std; #define ll long long ...

  9. Codeforces Round #568 (Div. 2) G2. Playlist for Polycarp (hard version)

    因为不会打公式,随意就先将就一下? #include<cstdio> #include<algorithm> #include<iostream> #include ...

随机推荐

  1. WPF图形/文字特别效果之一:交叉效果探讨

    原文:WPF图形/文字特别效果之一:交叉效果探讨 为了说明问题,先看下图:图1  完全重叠的单一颜色文字它是2008几个字的叠加,并且颜色为单一的红色.如果不仔细分辨,你或许无法一下子看出是2008. ...

  2. Python抓取框架:Scrapy的架构

    最近在学Python,同时也在学如何使用python抓取数据,于是就被我发现了这个非常受欢迎的Python抓取框架Scrapy,下面一起学习下Scrapy的架构,便于更好的使用这个工具. 一.概述 下 ...

  3. Some Very Good VC++/MFC Resources Besides Codeproject.com

    Some Very Good VC++/MFC Resources Besides Codeproject.com http://www.naughter.com/ (VC++/MFC huge co ...

  4. cefsharp 与webbrowser简单对比概述

    原文:cefsharp 与webbrowser简单对比概述 有个项目需要做个简单浏览器,从网上了解到几个相关的组件有winform自带的IE内核的WebBrowser,有第三方组件谷歌内核的webki ...

  5. hdu 4035 可能性DP 成都网络游戏

    http://acm.hdu.edu.cn/showproblem.php?pid=4035 获得: 1.首先推断是不是树.事实上,所有的感觉身影,既看边数==算-1是不成立 2.有时候,我告诉孩子来 ...

  6. AngularJS ng-if使用

    示例中,根据ng-if指令显示不同任务状态,以及判断任务是否可以操作 <div ng-app="NgifDemoApp" ng-controller="NgifDe ...

  7. MyBatis 模板

    mybatis-config.xml: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE co ...

  8. MVC 创建强类型视图

    •在ViewModel中创建一个类型 •在Action中为ViewData.Model赋值 •在View中使用"@model类型"设置 14 手动创建强类型视图 •在ViewMod ...

  9. 【Gerrit】持续集成工具Jenkins的安装配置与使用过程中遇到的问题整理

    1.下载war包 https://jenkins.io/download/ 2.安装 java -jar jenkins.war Error: Feb 21, 2019 2:17:25 AM wins ...

  10. linux安装脚本

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...