当前位置:网站首页>C. awoo‘s Favorite Problem--Educational Codeforces Round 130 (Rated for Div. 2)
C. awoo‘s Favorite Problem--Educational Codeforces Round 130 (Rated for Div. 2)
2022-08-03 21:03:00 【秦小咩】
C. awoo's Favorite Problem
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
You are given two strings ss and tt, both of length nn. Each character in both string is 'a', 'b' or 'c'.
In one move, you can perform one of the following actions:
- choose an occurrence of "ab" in ss and replace it with "ba";
- choose an occurrence of "bc" in ss and replace it with "cb".
You are allowed to perform an arbitrary amount of moves (possibly, zero). Can you change string ss to make it equal to string tt?
Input
The first line contains a single integer qq (1≤q≤1041≤q≤104) — the number of testcases.
The first line of each testcase contains a single integer nn (1≤n≤1051≤n≤105) — the length of strings ss and tt.
The second line contains string ss of length nn. Each character is 'a', 'b' or 'c'.
The third line contains string tt of length nn. Each character is 'a', 'b' or 'c'.
The sum of nn over all testcases doesn't exceed 105105.
Output
For each testcase, print "YES" if you can change string ss to make it equal to string tt by performing an arbitrary amount of moves (possibly, zero). Otherwise, print "NO".
Example
input
Copy
5 3 cab cab 1 a b 6 abbabc bbaacb 10 bcaabababc cbbababaac 2 ba ab
output
Copy
YES NO YES YES NO
=========================================================================
ab ->ba
bc->cb
第一个置换只能有两个作用,那就是aaaab把b放到前面,abbbb把a放在后面
第二个置换同理
很自然的贪心。我们从末尾往前扫描,如果相等那么继续,否则,如果b对a,往前找a, c对b,往前找b,找不到或者不是这种配对,那么就无解。做多了感觉瞬间来。
# include <iostream>
# include<algorithm>
# include<cstring>
# include<vector>
# include<queue>
# define mod 1000000007
using namespace std;
typedef long long int ll;
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
string s,t;
cin>>s>>t;
int flag=0;
for(int i=n-1;i>=0;i--)
{
if(s[i]==t[i])
continue;
if(s[i]=='b'&&t[i]=='a')
{
int j;
for( j=i-1;j>=0;j--)
{
if(s[j]=='a'||s[j]=='b')
{
if(s[j]=='a')
{
swap(s[j],s[i]);
break;
}
}
else
{
flag=1;
break;
}
}
if(j==-1)
flag=1;
}
else if(s[i]=='c'&&t[i]=='b')
{
int j;
for( j=i-1;j>=0;j--)
{
if(s[j]=='c'||s[j]=='b')
{
if(s[j]=='b')
{
swap(s[j],s[i]);
break;
}
}
else
{
flag=1;
break;
}
}
if(j==-1)
flag=1;
}
else
{
flag=1;
break;
}
}
if(flag)
{
cout<<"NO"<<endl;
}
else
{
cout<<"YES"<<endl;
}
}
return 0;
}
边栏推荐
- 通关剑指 Offer——剑指 Offer II 009. 乘积小于 K 的子数组
- win10安装及配置Gradle
- leetcode 448. Find All Numbers Disappeared in an Array 找到所有数组中消失的数字(简单)
- Zero trust, which has been popular for more than ten years, why can't it be implemented?
- 简单又有效的基本折线图制作方法
- XSS练习---一次循环和两次循环问题
- leetcode 16. 数值的整数次方(快速幂+递归/迭代)
- ES6 deconstruction assignment - array object deconstruction and deconstruction
- leetcode refers to Offer 58 - II. Left Rotate String
- 华为设备配置VRRP与BFD联动实现快速切换
猜你喜欢

5 款漏洞扫描工具:实用、强力、全面(含开源)

TweenMax.js向日葵表情变化

通关剑指 Offer——剑指 Offer II 009. 乘积小于 K 的子数组

Cesium 修改鼠标样式

手动输入班级人数及成绩求总成绩和平均成绩?

好朋友离职了,一周面试了20多场,我直呼内行

How can a cloud server safely use local AD/LDAP?

Markdown syntax

XSS线上靶场---haozi

From September 1st, my country has granted zero-tariff treatment to 98% of tax items from 16 countries including Togo
随机推荐
检测和控制影子IT的五个步骤
svg+js订单确认按钮动画js特效
idea2021.1.3版本如何启动多个客户端程序
李沐动手学深度学习V2-BERT微调和代码实现
3种圆形按钮悬浮和点击事件
LeetCode_位数统计_中等_400.第 N 位数字
盲埋孔PCB叠孔设计的利与弊
CheckBox列表项选中动画js特效
Abs (), fabs () and LABS ()
Engineering Effectiveness Governance for Agile Delivery
if _name_ == “__main__“:NameError: name ‘_name_‘ is not defined
双线性插值公式推导及Matlab实现
反射机制
TweenMax.js向日葵表情变化
PyCharm函数自动添加注释无参数问题
华为设备配置VRRP与BFD联动实现快速切换
2022年强网杯rcefile wp
chartjs自定义柱状图插件
LeetCode_Digit Statistics_Medium_400. Nth Digit
chart.js多条曲线图插件