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. iOS 5.1.1 设备不能安装AdHoc问题版本号

    之前苹果更新了审计规范,要求必须支持64通过苹果的审核权限位架构的应用.     但运营商表示反馈.使用iOS5.1.1该系统无法安装我们的包Adhoc版本号.     认为非常莫名.由于我们在Dep ...

  2. 分类算法SVM(支持向量机)

    支持向量机(Support Vector Machine ,SVM)的主要思想是:建立一个最优决策超平面,使得该平面两侧距离该平面最近的两类样本之间的距离最大化,从而对分类问题提供良好的泛化能力.对于 ...

  3. 深入WPF中的图像画刷(ImageBrush)之1——ImageBrush使用举例

    原文:深入WPF中的图像画刷(ImageBrush)之1--ImageBrush使用举例 昨天我在<简述WPF中的画刷(Brush)  >中简要介绍了WPF中的画刷的使用.现在接着深入研究 ...

  4. HDU 4414 Finding crosses(dfs)

    Problem Description The Nazca Lines are a series of ancient geoglyphs located in the Nazca Desert in ...

  5. 浅谈 Swift 中的 Optionals

    input[type="date"].form-control,.input-group-sm>input[type="date"].input-grou ...

  6. 发现意外之美 - SwiftyJSON 源码学习 | 咖啡时间

    SwiftyJSON 是一个很优秀 Swift 语言第三方库.我们在之前的文章中对它有过介绍.相信大家对它也有了一些了解.提升开发功力最好的方式就是学习优秀的源代码了,记得大神 TJ Holowayc ...

  7. SVN如何迁徙到Git

    由于一直都是采用SVN作为源码管理,转到Git不能从头开始吧~~下面就具体说说如何将SVN已有的项目工程迁徙到Git上面 步骤 (1) 安装Git客户端程序(2) 将SVN上面的工程通过Git克隆到本 ...

  8. XF内容视图和框架

    <?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http:/ ...

  9. WPF自定义窗口最大化显示任务栏

    原文:WPF自定义窗口最大化显示任务栏 当我们要自定义WPF窗口样式时,通常是采用设计窗口的属性 WindowStyle="None" ,然后为窗口自定义放大,缩小,关闭按钮的样式 ...

  10. php将两个数组相同的key合并到一个数组

    $arr = array(     array(     'id' => 1,     'user_name'=>'test1'     ),     array(     'id' =& ...