Codeforces Round #501 (Div. 3) B. Obtaining the String (思维,字符串)

题意:有两个字符串\(S\)和\(T\),判断\(T\)是否能由\(S\)通过交换某位置的相邻字符得到,如果满足,输出交换次数及每次交换的位置,否则输出\(-1\).
题解:首先判断不满足的情况,只有当两个字符串中出现的字母次数不同时不满足条件,用桶判断一下即可.然后我们再来看有解的情况,我们对\(T\)的每个字符标上序号,如样例1中:\(abdfec\)对应\(123456\),则\(S\)中与之对应的是\(abcdef\)->\(126354\),所以要想让\(S\)变成\(T\),就要让其序号变成\(T\)的序号,我们冒泡排序记录变换位置就能的出答案.
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <stack>
#include <queue>
#include <vector>
#include <map>
#include <set>
#include <unordered_set>
#include <unordered_map>
#define ll long long
#define fi first
#define se second
#define pb push_back
#define me memset
const int N = 1e6 + 10;
const int mod = 1e9 + 7;
const int INF = 0x3f3f3f3f;
using namespace std;
typedef pair<int,int> PII;
typedef pair<ll,ll> PLL; int n;
string s,t;
int num[N];
vector<int> ans;
map<char,int> mp1,mp2; int main() {
ios::sync_with_stdio(false);cin.tie(0);
cin>>n;
cin>>s>>t;
for(int i=0;i<s.size();++i){
mp1[s[i]]++;
}
for(int i=0;i<t.size();++i){
mp2[t[i]]++;
}
for(char i='a';i<='z';++i){
if(mp1[i]!=mp2[i]){
puts("-1");
return 0;
}
}
for(int i=0;i<n;++i){
for(int j=0;j<n;++j){
if(s[j]==t[i] && num[j]==0){
num[j]=i;
break;
}
}
}
for(int i=0;i<n;++i){
for(int j=0;j<n-1;++j){
if(num[j]>num[j+1]){
ans.pb(j+1);
swap(num[j],num[j+1]);
}
}
}
printf("%zu\n",ans.size());
for(auto w:ans){
printf("%d ",w);
} return 0;
}
Codeforces Round #501 (Div. 3) B. Obtaining the String (思维,字符串)的更多相关文章
- Codeforces Round #501 (Div. 3) D. Walking Between Houses (思维,构造)
题意:一共有\(n\)个房子,你需要访问\(k\)次,每次访问的距离是\(|x-y|\),每次都不能停留,问是否能使访问的总距离为\(s\),若能,输出\(YES\)和每次访问的房屋,反正输出\(NO ...
- Codeforces Round #657 (Div. 2) A. Acacius and String(字符串)
题目链接:https://codeforces.com/contest/1379/problem/A 题意 给出一个由 '?' 和小写字母组成的字符串,可以将 '?' 替换为小写字母,判断是否存在一种 ...
- Codeforces Round #527 (Div. 3) C. Prefixes and Suffixes (思维,字符串)
题意:给你某个字符串的\(n-1\)个前缀和\(n-1\)个后缀,保证每个所给的前缀后缀长度从\([1,n-1]\)都有,问你所给的子串是前缀还是后缀. 题解:这题最关键的是那两个长度为\(n-1\) ...
- Codeforces Round #501 (Div. 3) F. Bracket Substring
题目链接 Codeforces Round #501 (Div. 3) F. Bracket Substring 题解 官方题解 http://codeforces.com/blog/entry/60 ...
- Codeforces Round #184 (Div. 2) E. Playing with String(博弈)
题目大意 两个人轮流在一个字符串上删掉一个字符,没有字符可删的人输掉游戏 删字符的规则如下: 1. 每次从一个字符串中选取一个字符,它是一个长度至少为 3 的奇回文串的中心 2. 删掉该字符,同时,他 ...
- Codeforces Round #297 (Div. 2)B. Pasha and String 前缀和
Codeforces Round #297 (Div. 2)B. Pasha and String Time Limit: 2 Sec Memory Limit: 256 MBSubmit: xxx ...
- 字符串处理 Codeforces Round #297 (Div. 2) B. Pasha and String
题目传送门 /* 题意:给出m个位置,每次把[p,len-p+1]内的字符子串反转,输出最后的结果 字符串处理:朴素的方法超时,想到结果要么是反转要么没有反转,所以记录 每个转换的次数,把每次要反转的 ...
- Codeforces Round #521 (Div. 3) E. Thematic Contests(思维)
Codeforces Round #521 (Div. 3) E. Thematic Contests 题目传送门 题意: 现在有n个题目,每种题目有自己的类型要举办一次考试,考试的原则是每天只有一 ...
- Codeforces Round #501 (Div. 3)
A - Points in Segments 题意:implement #include<bits/stdc++.h> using namespace std; typedef long ...
随机推荐
- Linux 入门教程:00 Background
Linux 为何物? 就是一个操作系统. Linux 历史: 操作系统始于二十世纪五十年代,当时的操作系统能运行批处理程序.批处理程序不需要用户的交互,它从文件或者穿孔卡片读取数据,然后输出到另外一个 ...
- mac安装Navicat Premium Mac 12 破解版
参考:https://www.cnblogs.com/lyfstorm/p/11123159.html 激活后:
- 【Java】Java注释 - 单行、块、文档注释
简单记录,Java 核心技术卷I 基础知识(原书第10 版) 注释 我们在编写程序时,经常需要添加一些注释,用来描述某段代码的作用,提高Java源程序代码的可读性,使得Java程序条理清晰. 写代码的 ...
- CTFshow-萌新赛逆向_签退
查看题目信息 下载re3.pyc文件 使用uncompyle把re3.pyc反编译为re3.py uncompyle6 re3.pyc > re3.py 查看re3.py文件 # uncompy ...
- libnum报错问题解决
之前在使用python libnum库时报错 附上报错内容 Traceback (most recent call last) : File" D:/python file/ctf/RSA共 ...
- Empire
Empire 内网渗透神器 一 基本渗透 安装 git clone https://github.com/BC-SECURITY/Empire/ ./setup/install.sh 启动 ./emp ...
- ios获取缓存文件的大小并清除缓存
移动应用在处理网络资源时,一般都会做离线缓存处理,其中以图片缓存最为典型,其中很流行的离线缓存框架为SDWebImage. 但是,离线缓存会占用手机存储空间,所以缓存清理功能基本成为资讯.购物.阅读类 ...
- C++:标准I/O流
标准I/O对象:cin,cout,cerr,clog cout; //全局流对象 输出数据到显示器 cin; //cerr没有缓冲区 clog有缓冲区 cerr; //标准错误 输出数据到显示器 cl ...
- 1.8V转3V,1,8V转3.3V电源芯片的规格书参数
1.8V电平如何稳压稳定输出3V或者3.3V,就需要用到1.8V转3V,1,8V转3.3V电源芯片,就PW5100(低功耗,外围简单),PW5200A是可调输出电压,可以输出电压根据外围电阻来设置命令 ...
- jQuery 点击input框标题收起
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...