cf823div2C

题目链接

题目

给你两个字符串\(s_1,s_2\).每次操作可以让\(s_1\)的前k个和\(s_2\)的后k个交换。询问是否可以通过多次上述操作,使得\(s_1=s_2\)。

思路

这种题通过观察,从变中发现不变的部分。可以发现,每次交换。

每个位置\(s1_{i}\)对应位\(s2_{n-i+1}\)是不变的。通过这个性质,我们可以知道对于每个这样的数对,我们必须找到另外一个相同的数对使得他们交叉匹配,才能使\(s1=s2\)有可能成立。对于\(n\)为偶数的情况。每种数对都必须是偶数个才能完全匹配。对于\(n\)为奇数,可以找到一个中间的一个来放奇数的数对,但是这个数对必须是相同字母组成的才可以。

代码

#include<cstdio>
#include<iostream>
#include<cmath>
#include<vector>
#include<string>
#include<cstring>
#include<algorithm>
#define rep(i,l,n) for(int i=(l);i<=(n);++i)
#define ll long long
#define N 100005
using namespace std;
int t,n;
int a[200][200];
char s1[N],s2[N];
void solve()
{
scanf("%d",&n);
cin>>s1+1>>s2+1;
rep(i,1,n)
{
int j=n-i+1;
int tepa=s1[i],tepb=s2[j];
if(tepa>tepb)swap(tepa,tepb);
a[tepa][tepb]++;
}
int cnt=0;
for(int i='a';i<='z';++i)
{
cnt+=(a[i][i]&1);
for(int j=i+1;j<='z';++j)
{
if(a[i][j]&1)
{
printf("NO\n");
return;
}
}
}
if(((n&1)==0)&&cnt==0)printf("YES\n");
else if((n&1)&&cnt==1)printf("YES\n");
else cout<<"NO\n";
return;
}
int main()
{
cin>>t;
while(t--)
{
memset(a,0,sizeof(a));
solve();
}
system("pause");
return 0;
}

最新文章

  1. js做通讯录的索引滑动显示效果和滑动显示锚点效果
  2. hdu 5652 India and China Origins 并查集
  3. linux下驱动webcam
  4. Java数据库——事务处理
  5. [moka同学摘录]在Centos 6.5下成功安装和配置了vim7.4
  6. zw版【转发&#183;台湾nvp系列Delphi例程】HALCON Histogram
  7. linux 下echo命令写入文件内容
  8. Duilib学习笔记《03》— 控件使用
  9. Dungeon Game
  10. 分布式存储Memcache替代Session方案
  11. Objective-C的反射
  12. python内置函数(4)
  13. Spring Boot MongoDB 查询操作 (BasicQuery ,BSON)
  14. html+css+js整体布局——[防止浏览器扩大,界面排版混乱]
  15. Elasticsearch中使用groovy脚本处理boolean字段的一个问题
  16. 1. apache如何启动
  17. 23种设计模式之解释器模式(Interpreter)
  18. Postman使用js获取日期
  19. 20145324王嘉澜《网络对抗技术》web安全基础实践
  20. SQL Server 自动化运维系列 - 监控磁盘剩余空间及SQL Server错误日志(Power Shell)

热门文章

  1. 生态学建模:增强回归树(BRT)预测短鳍鳗生存分布和影响因素|附代码数据
  2. Twig
  3. JSP课设:学生选课系统(附源码+调试)
  4. go标准库之fmt
  5. 全国分乡镇第六次人口普查数据shp数据库省市区县街道
  6. CTreeCtrl中通过单击获取当前选项文本
  7. 使用HttpClient4.5 使用MultipartEntityBuilder 类发送 multipart/formdata 格式给第三方接口 失败的原因
  8. vue- cube-scroll踩坑记
  9. VUE学习-计算属性与监听器
  10. JS中split、slice、splice区别