zoukankan      html  css  js  c++  java
  • Codeforces 1215C. Swap Letters

    传送门

    好像是个挺显然的贪心

    首先每次交换当然要尽量一次交换就多两个相同的位置

    优先把 $egin{bmatrix}a\ bend{bmatrix}$ 和 $egin{bmatrix}a\ bend{bmatrix}$ 交换

    优先把 $egin{bmatrix}b\ aend{bmatrix}$ 和 $egin{bmatrix}b\ aend{bmatrix}$ 交换

    最后如果剩下$egin{bmatrix}a\ bend{bmatrix}$,$egin{bmatrix}b\ aend{bmatrix}$ 各一个

    我们才只好用两次交换次数把它们搞好,这样就是最优的了

    当然如果最后某一种情况剩下一个,另一种情况却没了

    那就无解了,具体维护看代码吧

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<vector>
    using namespace std;
    typedef long long ll;
    inline int read()
    {
        int x=0,f=1; char ch=getchar();
        while(ch<'0'||ch>'9') { if(ch=='-') f=-1; ch=getchar(); }
        while(ch>='0'&&ch<='9') { x=(x<<1)+(x<<3)+(ch^48); ch=getchar(); }
        return x*f;
    }
    const int N=4e5+7;
    int n,pa,pb;
    char A[N],B[N];
    vector <int> ans[2];
    int main()
    {
        n=read(); scanf("%s",A+1); scanf("%s",B+1);
        for(int i=1;i<=n;i++)
        {
            if(A[i]==B[i]) continue;
            if(A[i]=='a')
            {
                if(!pa) pa=i;
                else ans[0].push_back(pa),ans[1].push_back(i),pa=0;
            }
            else
            {
                if(!pb) pb=i;
                else ans[0].push_back(pb),ans[1].push_back(i),pb=0;
            }
        }
        if((pa&&!pb)||(!pa&&pb)) { printf("-1
    "); return 0; }
        if(pa&&pb) { ans[0].push_back(pa); ans[1].push_back(pa); ans[0].push_back(pa); ans[1].push_back(pb); }
        int len=ans[0].size();
        printf("%d
    ",len);
        for(int i=0;i<len;i++) printf("%d %d
    ",ans[0][i],ans[1][i]);
        return 0;
    }
  • 相关阅读:
    redhat7 安装 mysql5.7
    python django 网站局域网问
    SQLiteStudio
    升级gcc到gcc-8.1.0
    [SAP HANA ]fulltext index
    [ORACLE] SNC 学习
    [oracle]sqlplus 输出格式化print_table学习
    win-->linux 文本转换
    [ORACLE]ORA-03113: end-of-file on communication channel
    ORACLE 在线重定义分区表
  • 原文地址:https://www.cnblogs.com/LLTYYC/p/11532388.html
Copyright © 2011-2022 走看看