Equalizing Two Strings
有几种情况可以直接判定结果:
① 字母对应个数不一样,可直接判NO② 当不满足①时,如果有一个字母有2个及以上的个数,也可直接判YES
③ 当不满足①②时我们可以知道,此时的字符串最多也只有26个字符,所以可以直接暴力,一个字符串只交换相邻位的字符必然可以变成另一个字符串,而如果交换次数为偶数,则为YES,否则为NO。
其实很多时候E、F题也并没有想象中的那么难,可以尝试尝试,至少赛时把题目看看也好。
代码:
// Created by CAD on 2019/11/7.
#include <bits/stdc++.h>
#define mst(name, value) memset(name,value,sizeof(name))
using namespace std;
const int maxn=2e5+5;
int cnt1[30],cnt2[30];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int q; cin>>q;
while(q--)
{
int n;
string s,t;
cin>>n>>s>>t;
mst(cnt1,0),mst(cnt2,0);
for(auto i:s)
cnt1[i-'a'+1]++;
for(auto i:t)
cnt2[i-'a'+1]++;
int flag=0;
for(int i=1;i<=26;++i)
if(cnt1[i]!=cnt2[i]) flag=1;
if(flag) {cout<<"NO"<<"\n";continue;}
for(int i=1;i<=26;++i)
if(cnt1[i]>1) flag=1;
if(flag) {cout<<"YES\n";continue;}
int cnt=0;
for(int i=0;i<n;++i)
if(s[i]!=t[i])
{
int x;
for(int j=i+1;j<n;++j)
if(s[j]==t[i])
{
x=j;
break;
}
for(int j=x;j>i;--j)
swap(s[j],s[j-1]),cnt++;
}
if(cnt%2==0) cout<<"YES\n";
else cout<<"NO\n";
}
return 0;
}
Equalizing Two Strings的更多相关文章
- Codeforces Round #598 (Div. 3) F. Equalizing Two Strings 构造
F. Equalizing Two Strings You are given two strings s and t both of length n and both consisting of ...
- Codeforces Round #598 (Div. 3) F. Equalizing Two Strings
You are given two strings ss and tt both of length nn and both consisting of lowercase Latin letters ...
- Equalizing Two Strings CodeForces - 1256F (思维)
大意: 给定两个串$s,t$, 每次操作任选长度$len$, 分别翻转$s,t$中一个长$len$的子串, 可以进行任意次操作, 求判断能否使$s$和$t$相同. 字符出现次数不一样显然无解, 否则若 ...
- 【CF598 Div3 F】Equalizing Two Strings
一道通篇结论的傻逼题,被 lh 随手秒了 别告诉我你不会 Div3 的题,你肯定在 fake 没看过题解,以下做法纯属口胡,应该没问题 Description https://www.luogu.or ...
- 【CF1256F】Equalizing Two Strings(逆序对)
题意:给定两个长度均为n且由小写字母组成的字符串,可以进行若干次操作,每次从两个串中分别选一个长度相等的子串进行翻转,问是否存在能使两串相等的一系列操作方案 n<=2e5 思路:首先如果每种字母 ...
- Codeforces Round #598 (Div. 3)
传送门 A. Payment Without Change 签到. Code /* * Author: heyuhhh * Created Time: 2019/11/4 21:19:19 */ #i ...
- CF598: div3解题报告
CF598:div3解题报告 A: Payment Without Change 思路: 按题意模拟即可. 代码: #include<bits/stdc++.h> using namesp ...
- 【CF1256】Codeforces Round #598 (Div. 3) 【思维+贪心+DP】
https://codeforces.com/contest/1256 A:Payment Without Change[思维] 题意:给你a个价值n的物品和b个价值1的物品,问是否存在取物方案使得价 ...
- CF 题目选做
写省选的题目对noip没什么大用 关键是 细节题或者是思考题比较重要 练思维自然是CF比较好了 把我见到的比较好的CF题放上来刷一刷. LINK:Complete the projects 就是说一个 ...
随机推荐
- docker 入门4 - 群 【翻译】
开始,第 4 部分:群 先决条件 安装 Docker 版本 1.13 或更高版本. 获取第 3 部分先决条件中所述的 Docker Compose. 获取 Docker Machine, Mac 的 ...
- 怎样实现跨域AJAX请求发送Cookie
第一步: 服务器必须在Response Header中设置: Access-Control-Allow-Credentials: true 第二步: 客户端发起请求时需要将 xhr.withCrede ...
- C++反汇编第四讲,认识多重继承,菱形继承的内存结构,以及反汇编中的表现形式.
目录: 1.多重继承在内存中的表现形式 多重继承在汇编中的表现形式 2.菱形继承 普通的菱形继承 虚继承 汇编中的表现形式 一丶多重继承在内存中的表现形式 高级代码: class Father1 { ...
- c# 并行计算 Parallel
//多重认证 Parallel.Invoke(() => { jianYanResult = new VerifiedMobileService().CheckMobileFun(request ...
- VS多行注释快捷键
VS多行注释快捷键 注释:Ctrl+K,Ctrl+C 取消注释:Ctrl+K,Ctrl+U
- VBA精彩代码分享-1
今天下班前分享一下之前在网上搜到的两段好用的VBA代码,貌似都来自国外,觉得挺好,模仿不来. 第一段的功能是修改VBA控件中的文本框控件,使其右键可以选择粘贴.复制.剪切等: Option Expli ...
- cmd设置电脑自动关机
cmd设置电脑自动关机 设置:(3600代表一小时,单位s) shutdown -s -t 3600 取消 shutdown -a
- [转]关闭ssh的自动启动
转载自:http://blog.chinaunix.net/uid-20147410-id-3206364.html 安装了ssh服务,但是不希望他开机自动启动,可以如下设置: 在/etc/init/ ...
- JAVA语言程序设计课后习题----第六单元解析(仅供参考)
1 本题就是基本函数的用法 import java.util.Scanner; public class Poone { public static void main(String[] args) ...
- P1912 [NOI2009]诗人小G
P1912 [NOI2009]诗人小G 思路: 平行四边形不等式优化dp 因为f(j, i) = abs(sum[i]-sum[j]+i-j-1-l)^p 满足平行四边形不等式 j < i f( ...