题解 P2133 【天作之合】

· · 题解

其实只是求逆序对啦(并没有那么难)

以小明的数字串为模板,e[i]储存i应该在第几个

小红的用f数组处理后即可得出她的字符顺序,再求一下逆序对即可

#include<bits/stdc++.h>
using namespace std;
int a,b,e[7],f[7],t,ans,i,j;
int main()
{
    cin>>a>>b;
    t=100000;
    for (i=1;i<=6;i++)
    {
        e[a/t]=i;
        a=a%t;
        t=t/10;
    }
    t=100000;
    for (i=1;i<=6;i++)
    {
        f[i]=e[b/t];
        b=b%t;
        t=t/10;
    }
    for (i=1;i<=5;i++)
        for (j=i+1;j<=6;j++)
        if (f[j]<f[i]) ans++;
    printf("%d",ans<=2?ans+2:ans);
    return 0;
}

最后注意ans<=2时加2