cf823div2C
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的更多相关文章
随机推荐
- 为什么 A 能 ping 通 B,B 却不能 ping 通 A ?
有开发小哥咨询了一个问题,记录一下处理过程分享给有需要的朋友. 问题如下: A.B 两台开发服务器连接交换机,并且 A.B 两台服务器的 IP 地址设置为同一个网段,却发现 A 能 ping 通 B ...
- Oracle JDK 和 OpenJDK 有什么区别?
OpenJDK是Sun在2006年末把Java开源而形成的项目,这里的"开源"是通常意义上的源码开放形式,即源码是可被复用的,例如IcedTea.UltraViolet都是从Ope ...
- ubuntu启动盘制作
转自https://www.cnblogs.com/silentdoer/p/13044305.html 1. 从Ubuntu官网http://cn.ubuntu.com/download/下载系统的 ...
- 我和Java这些年的故事(三)
J2EE让Java在服务端找到了用武之地,之前一直处于鄙视链末端的Java,也终于有了向VB/VC叫板的资本.EJB更是J2EE的代名词,是解决企业级组件复用的法宝. 有了JSP/Servlet,Ja ...
- tomcat多主多备
主服务器默认轮询,当主服务器全部挂了,就会访问备机backup,备机也默认轮询
- 0xc0000142怎么修复
0xc0000142怎么修复 参考链接 https://jingyan.baidu.com/article/4d58d54102f3d29dd4e9c0b1.html
- 统计学习导论(ISLR)(三):线性回归(超详细介绍)
统计学习导论(ISLR) 参考资料: The Elements of Statistical Learning An Introduction to Statistical Learning 统计学习 ...
- SAP 自建事务码
自建事务码的 事务码 se93 一般来说开发人员会遇到,开发了报表已经一些功能,不会让业务人员通过se38来进行使用,一般会新建一个事务码让业务人员在t-code中的使用 配置对应的程序即可
- PHP 阿里云短信验证码的实现
Test.php是测试你的环境是否部署完成 demo里的sendSms.php里修改 // fixme 必填: 请参阅 https://ak-console.aliyun.com/ 取得您的AK信息$ ...
- Software--Java--远程调试
Java 远程调试的原理是两个 VM 之间通过debug 协议进行通信,然后以达到远程调试的目的.两者之间可以通过socket进行通信. 步骤: 1. 首先被 debug 程序的虚拟机在启动时要开启d ...