Codeforces Round #568 (Div. 2)B
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的更多相关文章
- Codeforces Round #568 (Div. 2)A
A. Ropewalkers 题目链接:http://codeforces.com/contest/1185/problem/A 题目: Polycarp decided to relax on hi ...
- codeforces Round #568(Div.2)A B C
有点菜,只写出了三道.活不多说,上题开干. A. Ropewalkers Polycarp decided to relax on his weekend and visited to the per ...
- Codeforces Round #568 (Div. 2) D. Extra Element
链接: https://codeforces.com/contest/1185/problem/D 题意: A sequence a1,a2,-,ak is called an arithmetic ...
- 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 ...
- Codeforces Round #568 (Div. 2) B. Email from Polycarp
链接: https://codeforces.com/contest/1185/problem/B 题意: Methodius received an email from his friend Po ...
- Codeforces Round #568 (Div. 2) A.Ropewalkers
链接: https://codeforces.com/contest/1185/problem/A 题意: Polycarp decided to relax on his weekend and v ...
- Codeforces Round #568 (Div. 2) G1. Playlist for Polycarp (easy version) (状压dp)
题目:http://codeforces.com/contest/1185/problem/G1 题意:给你n给选项,每个选项有个类型和价值,让你选择一个序列,价值和为m,要求连续的不能有两个相同的类 ...
- Codeforces Round #568 Div. 2
没有找到这场div3被改成div2的理由. A:签到. #include<bits/stdc++.h> using namespace std; #define ll long long ...
- Codeforces Round #568 (Div. 2) G2. Playlist for Polycarp (hard version)
因为不会打公式,随意就先将就一下? #include<cstdio> #include<algorithm> #include<iostream> #include ...
随机推荐
- linux 下Eclipse for C/C++的不常见设置
设置1:build project的时候,让编译器支持 三字母词. 项目文件右击--> Properties-->C/C++ Build--> Settings 如图设置: 再 C ...
- C# WPF 调用FFMPEG实现“SORRY 为所欲为/王境泽”表情包GIF生成软件
C# WPF 调用FFMPEG实现“SORRY 为所欲为/王境泽”表情包GIF生成 1,调用ffmpeg将外挂字幕“嵌入”视频中,保存副本: 2,调用ffmpeg将副本视频导出为gif图片. 参考资料 ...
- 探索jquery方法中empty,remove与detach的区别
最近一直疑惑此三种方法的具体区别在于何处,随即想弄明白其具体的区别,看了一些说明,也依照官方文档,终于把这三个方法弄明白了,果然功夫不负有心人,继续努力. 上正文,先简单介绍下这三种方法 .empty ...
- crossplatform----文本编辑器工具Atom安装
1.简介 Atom 是 Github 专门为程序员推出的一个跨平台文本编辑器.具有简洁和直观的图形用户界面,并有很多有趣的特点:支持CSS,HTML,JavaScript等网页编程语言.它支持宏,自动 ...
- 使用Qt installer framework制作安装包(不知道是否适合Mac和Linux?)
一.介绍 使用Qt库开发的应用程序,一般有两种发布方式:(1)静态编译发布.这种方式使得程序在编译的时候会将Qt核心库全部编译到一个可执行文件中.其优势是简单单一,所有的依赖库都集中在一起,其缺点也很 ...
- QT下的几种透明效果(QPalette背景白色,窗口设置setWindowOpacity,QPainter使用Clear模式绘图)
1.窗口整体透明,但是窗体上的控件不透明. 通过设置窗体的背景色来实现,将背景色设置为全透. QPalette pal = palette(); pal.setColor(QPalette::B ...
- 【码云周刊第 22 期】GO :互联网时代的 C 语言!
技术干货 标签:独家译文 1.Go 很好,为什么我们不使用它? 在这篇文章中,我将分享一下为什么我认为它很棒,使用它的一些缺点,以及为什么它还不是我们 Zapier 堆栈中的一部分. 2.从 Scal ...
- IOS开发之把 Array 和 Dictionaries 序列化成 JSON 对象
1 前言通过 NSJSONSerialization 这个类的 dataWithJSONObject:options:error:方法来实现,Array 和 dictionary 序列化成 JSON ...
- ELINK编程器典型场景之序列号烧写
序列号烧写功能是指往指定的FLASH存储位置写入产品序列号.由于产品序列号写入到FLASH存储位置,启用序列号功能需要考虑以下几个方面:如果您的应用使能了读保护,则解除读保护将触发全片擦除机制,序列号 ...
- Java FTP 基本操作
最近工作中用到了 FTP 相关的操作,所以借此机会了解了下具体内容. FTP基础 关于 FTP 基础推荐阅读<使用 Socket 通信实现 FTP 客户端程序>,其中需要特别注意的是主动模 ...