A. Adjacent Swapping
题意:
每次只能交换S相邻的两个字符,问最少要交换多少次,才能把字符串S变成两个相同的字符串组成,及 S=XX
eg: S=“abcdabdc” X=“abcd”
思路:
先把S中的一半的字符,及X1,移到左边,另一半移到右边,及X2。再把X2按照X1进行排列。
eg:
abbcdcad->abcbdcad->abcdbcad-> bacdbcad->bacdbacd
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 2e5 + 6;
int n, s1, s2, c[N], num[200], pass[N], have[N], vis[200],val[N];
ll ans, he;
char p[N], a[N], b[N];
vector<int>pos[30];
int