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 就是说一个 ...
随机推荐
- memcached基本操作指令
item执行命令: 第一行:Key Flags ExpirationTime BytesKey:Key 用于查找缓存值Flags:一个32位的标志值,客户机使用它存储关于键值对的额外信息Expirat ...
- CDN内容分发
什么是CDN内容分发: CDN的全称是Content Delivery Network,即内容分发网络.CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡.内容分 ...
- pat L2_004
一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点, 其左子树中所有结点的键值小于该结点的键值: 其右子树中所有结点的键值大于等于该结点的键值: 其左右子树都是二叉搜索树. 所谓二叉搜索 ...
- C语言存30位数字长的十进制方法
题目:将一个长度最多为30位数字的十进制非负整数转换为二进制数输出. 首先: 1,30位数字的十进制,并没有一个数据类型可以存下30位的整数类型数字,所以考虑用字符串存储这个数据,遍历这个字符串,每个 ...
- vue 安装插件
import VueClipboard from 'vue-clipboard2' import MessagePlugin from '../message' import * as filters ...
- 给枚举定义DescriptionAttribute
在C#中,枚举用来定状态值很方便,例如我定义一个叫做Season的枚举 public enum Season { Spring = 1, Summer = 2, Autumn = 3, Winter ...
- Azure下安装Redis
注意:这里需要注意Redis的区域,需要跟服务器在同一区域,否则Redis访问会很慢 Azure 中国区目前不支持在Portal管理界面创建 Redis,只能通过PowerShell创建,请参考以下步 ...
- 基于【 Docker】一 || ElK安装部署使用教程
一.ELK介绍 1.ELK组成 ELK由Elasticsearch.Logstash和Kibana三部分组件组成: Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发 ...
- NPOI 实现在已存在的Excel中任意位置开始插入任意数量行,并填充数据
1 npoi版本2.1.3.1 2 需要添加的引用: using NPOI.SS.UserModel;using NPOI.XSSF.UserModel;using System.IO;using N ...
- 使用高德地图JS获取当前位置和经纬度
先看效果,我做的是这样的,可以按地图位置来返回当前你点的位置(图一,二),也可以根据输入框的自动搜索(图三,四) HTML的代码: <div> <input type="t ...