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;
}

cf823div2C的更多相关文章

随机推荐

  1. java post格式发送application/x-www-form-urlencoded

    import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import org.apache.http.*; ...

  2. sap IUT240 Contract Accounts Receivable and Payable pdf

    sap IUT240 Contract Accounts Receivable and Payable  pdf sap IUT240 Contract Accounts Receivable and ...

  3. Hystrix-Dashboard可视化

    Hystrix-Dashboard可视化 1.新建子项目引pom.xml <dependencies> <!--hystrix dashboard--> <depende ...

  4. SHR之员工合同解除

    员工合同解除HRContractInfoFacadeControllerBean 这块的意思的源码可以自行翻阅该源码. 调用员工的实现这个合同自动解除 String sql="select ...

  5. File、Files、Path、Paths

    一.Path.Paths 和 File.Files // Paths 工具类,用于获取 Path 实例 Path path = Paths.get("files/Data.txt" ...

  6. 2022-4-8内部群每日三题-清辉PMP

    1.在创建最小可行产品(MVP)时,哪种方法至关重要? A.冒烟测试. B.演示. C.按版本发布. D.客户访谈. 2.敏捷项目团队决定修改使用中的测试过程,这一决定在哪一次会议上产生的? A.sp ...

  7. C# IOC 个人理解

    学习QFramework 过程中发现对IOC不太了解,就大概百度了一下思路 将原先类与类之间的相互依赖关系,转移到第三方容器中, 同过读取配置文件来生成对应的依赖关系,将原本类之间的耦合转移到配置文件 ...

  8. 044_Schedule Job 间隔时间自动执行

    需求:系统上的标准功能是能够设置间隔一天的执行,或者是写完代码着急测试我们写个5分钟后执行的: 但是遇到要求没间隔一小时或者十分钟执行,该怎么处理呢? global class **_Retrieve ...

  9. 最长公共子序列(LCS)tzoj:5752

    http://www.tzcoder.cn/acmhome/problemdetail.do?method=showdetail&id=5752 题意:求两个串的最长公共子序列(顺序相同即为子 ...

  10. Gif多图:我常用的 16 个 Sublime Text 快捷键 - 文章 - 伯乐在线

    Gif多图:我常用的 16 个 Sublime Text 快捷键 2014/12/23 · 书籍与教程, 开发 · 4 评论· Sublime Text 分享到: 139 .imooc, .imooc ...