【CF1243B2】Character Swap (Hard Version)【思维】


题意:给定两个字符串,问是否存在交换方案使得两个字符串相同,方案为交换次数小于等于2n,且每次只交换s1与s2中的一个字符
题解:考虑从前往后枚举,当第i位不同时,考虑找后边的第j位,若存在这样的第j位,则存在方案
1、存在aj==ai且j>i,那么交换aj,bi
2、存在bj==ai且j>i,那么先交换aj,bj,在交换aj,bi
这样对于每个位置最多两次操作,故若存在方案则一定在2n次内交换完成
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
using namespace std;
int T,n;
char s1[],s2[];
struct node
{
int a,b;
}mdf[];
int mdfn;
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d%s%s",&n,s1,s2);
bool fl=;mdfn=;
for(int i=;i<n;i++)
{
if(s1[i]!=s2[i])
{
fl=;
for(int j=i+;j<n;j++)
{
if(s1[j]==s1[i])
{
mdf[++mdfn]=(node){j,i};
swap(s1[j],s2[i]);
fl=;break;
}
if(s2[j]==s1[i])
{
mdf[++mdfn]=(node){j,j};
swap(s1[j],s2[j]);
mdf[++mdfn]=(node){j,i};
swap(s1[j],s2[i]);
fl=;break;
}
}
if(!fl){printf("No\n");fl=;break;}
fl=;
}
if(i==n-)fl=;
}
if(fl)
{
printf("Yes\n%d\n",mdfn);
for(int i=;i<=mdfn;i++)printf("%d %d\n",mdf[i].a+,mdf[i].b+);
}
}
return ;
}
【CF1243B2】Character Swap (Hard Version)【思维】的更多相关文章
- Codeforces Round #599 (Div. 2) B2. Character Swap (Hard Version) 构造
B2. Character Swap (Hard Version) This problem is different from the easy version. In this version U ...
- Codeforces Round #599 (Div. 2) B1. Character Swap (Easy Version) 水题
B1. Character Swap (Easy Version) This problem is different from the hard version. In this version U ...
- 【CF1243B1】Character Swap (Easy Version)【思维】
题意:给你两个字符串,问是否存在交换方案使得两个字符串变成一样的,方案为只交换一次且只交换s1与s2里的一个字符 题解:若一开始就相同,则存在交换方案 若一开始不同的位置为1个或大于2个,则不存在方案 ...
- Codeforces Round #599 (Div. 2) B2. Character Swap (Hard Version)
This problem is different from the easy version. In this version Ujan makes at most 2n2n swaps. In a ...
- Codeforces Round #599 (Div. 2) B1. Character Swap (Easy Version)
This problem is different from the hard version. In this version Ujan makes exactly one exchange. Yo ...
- B2. Character Swap (Hard Version)
链接: http://codeforces.com/contest/1243/problem/B2 题目大意: 两个字符串,判断能否通过交换为从而使得这两个字符串完全一致,如不可以的话,直接输出NO, ...
- CodeForces 1243"Character Swap (Hard Version)"(multimap)
传送门 •前置知识-multimap的用法 $multimap$ 与 $map$ 的区别在于一个 $key$ 可以对应几个值: 对于 $map$ 而言,一个 $key$ 只能对应一个值,并且按照 $k ...
- SPOJ:Just One Swap(统计&思维)
You are given an array of size N. How many distinct arrays can you generate by swapping two numbers ...
- Codeforces Round #579 (Div. 3) D2. Remove the Substring (hard version) (思维,贪心)
题意:给你一个模式串\(t\),现在要在主串\(s\)中删除多个子串,使得得到的\(s\)的子序列依然包含\(t\),问能删除的最长子串长度. 题解:首先,我们不难想到,我们可以选择\(s\)头部到最 ...
随机推荐
- 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_02 泛型_1_泛型的概念
ArrayList的源码,.在定义的时候用到了E这个E就是一个未知类型 ArrayList里面的add方法,参数也是E 包括我们之前常用的get方法 返回值也是E 类型什么时候可以确定呢?创建集合对象 ...
- MVC 源码系列之控制器执行(一)
控制器的执行 之前说了Controller的激活,现在看一个激活Controller之后控制器内部的主要实现. public interface IController { void Execute( ...
- 多线程09-Mutex
))) { Console.WriteLine("second instance is runing" ...
- 最新版 Mysql 8.0.16 创建用户权限更新回收权限
1.创建用户语法 : create user ‘写你自己的用户名’@‘写你需要哪个IP连接你的用户(%表示所有)’ identified by ‘密码’; 案例: create user ‘wangx ...
- C#设计模式:职责链模式(Chain of Responsibility)
一,什么是职责链模式(Chain of Responsibility) 职责链模式是一种行为模式,为解除请求的发送者和接收者之间的耦合,而使多个对象都有机会处理这个请求.将这些对象连接成一条链,并沿着 ...
- 帝国CMS模板中的多条件筛选方法
需求:点击某一条目,调出与该条目关键词相关的类似词条数据 要点: 1.帝国CMS灵动标签使用 [e:loop= 2.专题关键词筛选 enewszt 3.SQL语句筛选 select * fr ...
- box-shadow四个边框设置阴影样式
其实对于box-shadow,老白我也是一知半解,之前用的时候直接复制已有的,也没有仔细思考过box-shadow的数值分别对应什么,最后导致阴影的边如何自由控制,苦于懒人一个一直没有正式去学习,今天 ...
- CIFAR-10 dataset 的下载与使用、转图片
基本信息 CIFAR-10 是一个包含60000张图片的数据集.其中每张照片为32*32的彩色照片,每个像素点包括RGB三个数值,数值范围 0 ~ 255. 所有照片分属10个不同的类别,分别是 'a ...
- Python之列表、元组、字典、集合及字符串的详细使用
1.列表 列表相当与C++中的数组,是有序的项目, 通过索引进行查找,但使用起来却方便很多,具体的操作看代码,自己实践一次就非常简单了. 注:列表一般用中括号“[ ]” #列表(数组) name_li ...
- sqli(8)
第八关:单引号GET盲注 前言:感冒了很有以后摸到靶场,如若隔世....我的天,说不定又有同学要去实习了,再看看我.啧啧啧,神的飞起来.. 盲注需要掌握一些MySQL的相关函数:length(str) ...