题解:P12817 [NERC 2021] Deletive Editing
___define___ · · 题解
题目传送门
思路
由于每次操作只能删除被删除字母的第一次出现,所以考虑翻转单词
这里翻转与查询可以使用 STL 库中自带的 reverse 与 find 函数,会使程序更加简洁。
AC Code
#include<bits/stdc++.h>
using namespace std;
int n;
string s1,s2;
int a[105];
signed main(){
scanf("%d",&n);
while(n--)
{
cin>>s1>>s2;
reverse(s1.begin(),s1.end());
bool z=0;
for(int i=s2.size()-1;i>=0;--i)
{
a[i]=s1.find(s2[i]);
if(a[i]!=-1)s1[a[i]]='0';
else z=1;
if(i!=s2.size()-1)
if(a[i]<a[i+1]) z=1;
}
if(!z) printf("YES\n");
else printf("NO\n");
}
return 0;
}