首页 > 其他分享 >CodeForcese 1256F [思维]

CodeForcese 1256F [思维]

时间:2023-05-31 10:03:14浏览次数:50  
标签:思维 字符 int 1256F cnt2 cnt1 CodeForcese mx 翻转


题目链接:https://codeforces.com/problemset/problem/1256/F

 

解题思路:
任意的翻转都可以认为是翻转若干个长度为2的,交换两个数主要奇数次翻转。两个串可以翻转成一样,那么一定可以再花费一样的翻转次数变成有序的字符串,连续两个相等的字符翻转任意数次是一样的,所以只要有两个字符一样一定可以。接下来就是看冒泡排序的次数了。很明显两个字符翻转偶数次等于没有翻转,所以只要看他们取模二的区别。

#include<bits/stdc++.h>
using namespace std;
const int mx = 2e5+10;
char s1[mx];
char s2[mx];
int cnt1[30],cnt2[30];
int n;
bool solve() {
	memset(cnt1,0,sizeof(cnt1));
	memset(cnt2,0,sizeof(cnt2));
	for (int i=0;i<n;i++) {
		cnt1[s1[i]-'a']++;
		cnt2[s2[i]-'a']++;
	}
	for (int i=0;i<26;i++) if (cnt1[i] != cnt2[i])
		return 0;
	for (int i=0;i<26;i++) if (cnt1[i] > 1)
		return 1;
	int rex1 = 0,rex2 = 0;
	for (int i=0;i<n;i++) {
		for (int j=i+1;j<n;j++) {
			if (s1[j] < s1[i]) rex1++,swap(s1[j],s1[i]);
			if (s2[j] < s2[i]) rex2++,swap(s2[j],s2[i]);;
		}
	}
	return rex1%2 == rex2%2; 
}
int main() {
	int t;
	scanf("%d",&t);
	while (t--) {
		scanf("%d",&n);
		scanf("%s%s",s1,s2);
		puts(solve()?"YES":"NO");
	}
	return 0;
}

 

标签:思维,字符,int,1256F,cnt2,cnt1,CodeForcese,mx,翻转
From: https://blog.51cto.com/u_12468613/6384516

相关文章

  • 运维工程师缺乏开发能力或者说没有开发思维可能会...
    这年头,运维人员要求要懂开发了,不信去BOSS招聘上看看,要求上都写着最好是懂Python、Golang或Java其中之一。可见,运维工程师如果不具备一点开发能力,估计是不好混呀!那为啥要求运维人员需要具备一定的开发能力呢?我认为是自动化运维和DevOps文化的兴起所致。自动化和DevOps早都是大势所......
  • 思维导图安装
    MindManager202064位:http://dwnld.mindjet.com/stubs/Builds/MindManager2020/20_0_334/64Bit/MindManager2020.msi32位:http://dwnld.mindjet.com/stubs/Builds/MindManager2020/20_0_334/32Bit/MindManager2020.msiMP20-345-DP56-7778-919A......
  • CodeForces 1107A Digits Sequence Dividing(思维)
    传送门唉,题目讲的天花乱坠的,花里胡哨,一上来真是把我唬住了。愣了半天也没看出来到底咋做,后来借助翻译明白了这个题就是让你把一串字符分成两串,然后第一串要比第二串小,就这样,然后又是个SpecialJudge。做的时候就把第一个数作为第一个串,然后串长如果为2,就判断一下后面的串要比第一个......
  • CodeForces 1108B Divisors of Two Integers(思维)
    传送门题目大意就是给你由X,Y两个数的所有因子(包括一和数本身)组成的序列,然后通过这个序列找出这两个数。由此可见,序列里最大的数一定是X或Y其中的一个,然后我们的任务就是找另一个了,我找的是剩下的因子里不能被已找到的那个数整除的数中最大的数,且没有和这个数相同的数。#include<std......
  • CodeForces 1105B Zuhair and Strings(思维 + 枚举)
    传送门题目大意就是给你一个字符串,还有一个等级K,K的具体含义就是连续的相同的字符串的个数,题目就是要求长度为k的,字符一样的子串有几个,如果k==2就是比如aa,bb,cc,dd,..... 这样的,注意不能重叠。因为题目给的数据范围在2e5,所以枚举从a到z,然后取最大值就好了。代码如下#incl......
  • 用100万的“小报告”扭转老闆的决定——华为蓝军思维的教训
    ​美国社会心理学家通过研究发现:当一个观点对某人来说十分重要的时候,如果他能用这个观点,使得一个“反对者”改变其原有意见,而和他的观点一致,那么他更倾向于喜欢那个“反对者”,而不是一个从始至终的同意者。这其实就是“改宗效应”。对于那些正直的领导,一味拍马屁,并不会换来他们......
  • 换个思维方式,你离网工天花板会更近一点
    大家好,我是许公子。收到老杨的邀请,我正式加入网络工程师俱乐部了,未来会给你分享更多网工硬核内容。和老杨聊天的过程中,我想起了在刚入社会一两年,我去参加了一个高中同学聚餐。里面有自主创业的,也有年纪轻轻做管理的。虽然相谈甚欢,我一个普通网工在里面。多少有点自惭形秽。就算排除......
  • 520用项目管理思维来过,相当炸裂!
    明天就是一年一度的520啦,阿道单身多年的同事刚京在四月成功使用SWOT分析模型相亲成功,牵手女嘉宾。二人眼看着就要迎来在一起后的第一个节日520,刚京却因为没有头绪而陷入了不知所措的焦虑。 团队成员齐上阵,用项目管理思维,教刚京如何过好这个520!​项目启动今年的520是......
  • 互联网开发中六个思维模型
    一、邓宁-克鲁格效应1、内容邓宁-克鲁格效应表明,没有经验的人往往会高估自己的能力,而有经验的人往往会低估自己的能力。你不擅长某件事,但你会认为你擅长它。如果你擅长某事,你认为你不擅长-这可能导致冒名顶替综合症,这让你怀疑自己的能力,以至于你在其他具有相似技能的人中感到......
  • 沟通时需要关注的四个思维习惯
    大脑常见的思维习惯共有四个。 第一:大脑喜欢归纳主题在平时我们闲聊,天马行空,聊啥都行,但到了关键时候,如果你还是说的东一榔头西一棒槌,那别人就可能听不懂你要表达的重点是什么了。如果你在对方说之前就先告诉他,他说这些话的目的是什么,然后展开说明,这个时候,你就能够非常清晰地......