Codeforces Round #599 (Div. 2) B2. Character Swap (Hard Version) 构造

链接:https://www.luogu.com.cn/problem/CF1243B2 

题意:给你长度为n的两个字符串s和t,你可以最多进行2*n次操作,每次操作选择i和j,然后交换s[i]和t[j],问你能否使得两个字符串相同

构造方法:假如(0~i)部分s和t已经相等,在i位置时首先在(i+1~t.size()-1)里找有没有和t[i]相同的字符,如果找到,则交换s[i]和t[j],如果找不到,则在s中找,找到之后,先将s[j]与t[t.size()-1],交换,再将s[i]与t[t.size()-1]交换这样的次数最多也就是2*n次;然后s=t;

代码:

 

#include
using namespace std;
const int maxn=3e5+10;
int n;
string s,t;
vector > v;
void solve()
{
    cin>>n>>s>>t;
    v.clear();
    for(int i=0; i>t;
    while(t--)
        solve();
    return 0;
}

 

 

 

 

 

 

你可能感兴趣的:(Codeforces Round #599 (Div. 2) B2. Character Swap (Hard Version) 构造)