Codeforces Round 964 (Div. 4) D. Slavic's Exam
题目链接:https://codeforces.com/contest/1999/problem/D
题目描述
Slavic 的考试非常难,需要您的帮助才能通过。以下是他正在努力解决的问题:
存在一个字符串 s,它由小写英文字母和可能零个或多个“?”组成。
Slavic 被要求将每个“?”更改为小写英文字母,使得字符串 t成为字符串 s的子序列(不一定是连续的)。
输出任何这样的字符串,或者说如果不存在符合条件的字符串,则这是不可能的
输入
第一行包含一个整数 T( 1≤T≤104) — 测试用例的数量。
每个测试用例的第一行包含一个字符串 s( 1≤|s|≤2⋅105,而 s仅由小写英文字母和“?”组成) — 原始字符串。
每个测试用例的第二行包含一个字符串 t( 1≤|t|≤|s|,而 t仅由小写英文字母组成) — 该字符串应为字符串 s的子序列。
所有测试用例的 |s|总和不超过 2⋅105,其中 |x|表示字符串 x的长度。
输出
对于每个测试用例,如果不存在语句中描述的字符串,则输出“NO”(不带引号)。
否则,输出“YES”(不带引号)。然后,输出一行——符合所有条件的字符串。
您可以在任何情况下输出“YES”和“NO”(例如,字符串“yEs”、“yes”和“Yes”将被识别为肯定响应)。
如果有多个答案,您可以输出其中任何一个。
输入样例
5
?????
xbx
ab??e
abcde
ayy?x
a
ab??e
dac
paiu
mom
输出样例
YES
xabax
YES
abcde
YES
ayyyx
NO
NO
解析:给定两个小写字符串 s 和 t , s 中某些位置的字符是 ? ,可以将其替换为任意小写字符。现在需要修改 s ,以满足 t 为 s 的子序列,输出构造方案或者判断不存在方案。
对 s 从前往后贪心匹配 t 的每一位即可, ? 字符直接修改为 t 当前正在和 s 匹配的字符,匹配完之后遍历s把s多余的'?'随意修改成任意小写字母
贪心。时间复杂度 O(n) 。
代码
// Problem: D. Slavic's Exam
// Contest: Codeforces - Codeforces Round 964 (Div. 4)
// URL: https://codeforces.com/contest/1999/problem/D
// Memory Limit: 256 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org)
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int, int> PII;
typedef pair<LL, LL> PLL;
LL gcd(LL a, LL b){
return b > 0 ? gcd(b , a % b) : a;
}
LL lcm(LL a , LL b){
return a / gcd(a , b) * b;
}
const int Inf=0x3f3f3f3f;
const int N =1e5+10;
int Case;
void solve()
{
string s;
string t;
cin>>s>>t;
int len1=s.size(),len2=t.size();
int j=0;
for(int i=0;i<len1;i++)
{
if(s[i]==t[j])j++;
if(s[i]!=t[j]&&s[i]=='?')
{
s[i]=t[j];
j++;
}
if(j==len2)
{
break;
}
}
for(int i=0;i<len1;i++)if(s[i]=='?')s[i]='x';
if(j==len2)
{
cout<<"YES"<<endl<<s<<endl;
return;
}
else cout<<"No"<<endl;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>Case;
while(Case--)solve();
return 0;
}
Codeforces Round 964 (Div. 4) D. Slavic's Exam的更多相关文章
- Codeforces Round #425 (Div. 2) B. Petya and Exam(字符串模拟 水)
题目链接:http://codeforces.com/contest/832/problem/B B. Petya and Exam time limit per test 2 seconds mem ...
- Codeforces Round #425 (Div. 2) B - Petya and Exam
地址:http://codeforces.com/contest/832/problem/B 题目: B. Petya and Exam time limit per test 2 seconds m ...
- Codeforces Round #366 (Div. 2) ABC
Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...
- Codeforces Round #354 (Div. 2) ABCD
Codeforces Round #354 (Div. 2) Problems # Name A Nicholas and Permutation standard input/out ...
- Codeforces Round #368 (Div. 2)
直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...
- cf之路,1,Codeforces Round #345 (Div. 2)
cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅..... ...
- Codeforces Round #279 (Div. 2) ABCDE
Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems # Name A Team Olympiad standard input/outpu ...
- Codeforces Round #262 (Div. 2) 1003
Codeforces Round #262 (Div. 2) 1003 C. Present time limit per test 2 seconds memory limit per test 2 ...
- Codeforces Round #262 (Div. 2) 1004
Codeforces Round #262 (Div. 2) 1004 D. Little Victor and Set time limit per test 1 second memory lim ...
- Codeforces Round #371 (Div. 1)
A: 题目大意: 在一个multiset中要求支持3种操作: 1.增加一个数 2.删去一个数 3.给出一个01序列,问multiset中有多少这样的数,把它的十进制表示中的奇数改成1,偶数改成0后和给 ...
随机推荐
- org.springframework.beans.BeanUtils.copyProperties对象赋值的常见问题
org.springframework.beans.BeanUtils.copyProperties对象赋值的常见问题 //codepublic static void copyProperties( ...
- Lru-k在Rust中的实现及源码解析
LRU-K 是一种缓存淘汰算法,旨在改进传统的LRU(Least Recently Used,最近最少使用)算法的性能.将其中高频的数据达到K次访问移入到另一个队列进行保护. 算法思想 LRU-K中的 ...
- BST-splay板子 - 维护一个分裂和合并的序列
splay 均摊复杂度 \(O(\log n)\) 证明: https://www.cnblogs.com/Mr-Spade/p/9715203.html 我这个 splay 有两个哨兵节点,分别是1 ...
- css定位 position:sticky
今天在做css定位的时候遇到一个问题,我想用fixed定位下来,但是发现这个时候定义的百分百宽度不随着父元素走了而是整个屏幕的百分百,这个就很尴尬了,也不能固定宽度吧,毕竟还要宽度自适应. 这个时候发 ...
- python 自动化神器 多平台纯代码RPA办公自动化python框架
Pyaibote是一款专注于纯代码RPA(机器人流程自动化)的强大工具,支持Android.Browser和Windows三大主流平台.无论您需要自动化安卓应用.浏览器操作还是Windows应用程 ...
- 运行前端React框架出现node Error: bind EADDRINUSE null的解决方法
运行前端React代码时,出现这样的错误: node Error: bind EADDRINUSE null 后来发现端口号冲突,换个端口号后问题就可以解决了.
- 如何把自己项目中的jar包部署或pom部署到私服Nexus【实践可行版】
如何把自己项目中的jar包部署到私服 1.在项目的pom.xml文件中加入私服地址: <distributionManagement> <snapshotRepository> ...
- 我不应该用JWT的!
一.前言 大家好呀,我是summo,之前有自学过Shrio框架,网上一搜就有SpringBoot整合Shrio+ JWT的文章,我是在学习Shrio框架的时候顺带学的JWT.后来我还看见有很多博主专门 ...
- DASCTF 2023六月挑战赛|二进制专项 PWN (上)
DASCTF 2023六月挑战赛|二进制专项 PWN (上) 1.easynote edit函数对长度没有检查 free函数存在UAF漏洞 思路:1.通过堆溢出,UAF,修改size位达到堆块重叠,使 ...
- [rCore学习笔记 017]实现批处理操作系统
写在前面 本随笔是非常菜的菜鸡写的.如有问题请及时提出. 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 本章目 ...