题目链接: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的更多相关文章

  1. 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 ...

  2. 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 ...

  3. 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 ...

  4. Codeforces Round #354 (Div. 2) ABCD

    Codeforces Round #354 (Div. 2) Problems     # Name     A Nicholas and Permutation standard input/out ...

  5. Codeforces Round #368 (Div. 2)

    直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...

  6. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

  7. Codeforces Round #279 (Div. 2) ABCDE

    Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems     # Name     A Team Olympiad standard input/outpu ...

  8. 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 ...

  9. 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 ...

  10. Codeforces Round #371 (Div. 1)

    A: 题目大意: 在一个multiset中要求支持3种操作: 1.增加一个数 2.删去一个数 3.给出一个01序列,问multiset中有多少这样的数,把它的十进制表示中的奇数改成1,偶数改成0后和给 ...

随机推荐

  1. C#.Net筑基-集合知识全解

    01.集合基础知识 .Net 中提供了一系列的管理对象集合的类型,数组.可变列表.字典等.从类型安全上集合分为两类,泛型集合 和 非泛型集合,传统的非泛型集合存储为Object,需要类型转.而泛型集合 ...

  2. Prometheus监控系统(一)Prometheus介绍

    1. Prometheus简介 Prometheus受启发于Google的Brogmon监控系统(类似kubernetes是从Google的Brog系统演变而来).于2012年以开源形式发布,在201 ...

  3. 【全球首发】双核Cortex-A7@1.2GHz,仅99元起?含税?哇!!

  4. 【价格全面下调】一片含税79元,双核A7@1.2GHz,-40℃~85℃真工业级!

    自9个月前,创龙科技全志T113-i核心板(SOM-TLT113)推出之后,受到广大工业用户的高度关注,且超过300家企业已选用创龙科技T113-i核心板用于终端产品开发. 为了让更多用户轻松选择T1 ...

  5. Centos 下Rabbit MQ 常用操作指令 汇总

    1.rabbitmq 服务的启动停止. service rabbitmq-server start service rabbitmq-server stop 重启命令需要依次执行 stop 再 sta ...

  6. Java常见问题-基础

    JDK版本新特性: JDK1.4 正则表达式,异常链,NIO,日志类,XML解析器,XLST转换器 JDK1.5 自动装箱.泛型.动态注解.枚举.可变长参数.遍历循环 JDK1.6 提供动态语言支持. ...

  7. 阿里云服务器安装Docker Compose

    官网地址:https://docs.docker.com/compose/install/ 1. sudo curl -L "https://github.com/docker/compos ...

  8. 基于表单登录的cookies登录

    1.基于表单登录的cookies登录 In [ ]: import requests import matplotlib.pyplot as plt from http.cookiejar impor ...

  9. 解决方案 | pyautogui实现等待特定图片(对话框)出现(可设置等待超时时间)

    1.问题 为了等待某个[转换完毕]的图片(对话框)出现,如何设置? 2.解决方案代码如下 下面代码实现的是:设置超时时间为10s,当你在完成前序工作以后,代码开始进入等待,一旦你的特定图片出现了,马上 ...

  10. WSS SSL HTTPS之间的关系

    ssl: secure socket layer 安全套接层,简单来说是一种加密技术,通过它可以在通信的双方上建立一个安全的通信链路,因此数据交互的双方可以安全地通信,而不用担心数据被窃取:wss: ...