1 条题解
-
0
自动搬运
来自洛谷,原作者为

define
暑假了,活过来了 || 灰封会取,可以找我关回来 || (壶关条件)/paste/b13jayyz搬运于
2025-08-24 23:18:12,当前版本为作者最后更新于2025-06-14 21:07:01,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
思路
由于每次操作只能删除被删除字母的第一次出现,所以考虑翻转单词 ,再查询单词 中每一个字母在翻转后的单词 中第一次出现的位置,最后判断这些查询结果是否是升序的即可,注意查询顺序应从单词 的结尾开始,否则会使程序出现错误。
这里翻转与查询可以使用 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; }
- 1
信息
- ID
- 12544
- 时间
- 3000ms
- 内存
- 512MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者