CF1215 Cスワップ書簡(思考タイトル)

リンク:https://codeforces.com/problemset/problem/1215/C

 
            スワップ手紙(2秒)

Monocarp 2つの文字列を持っている  のS秒と  Tの Tは、等しい長さを持ちます。両方の文字列が小文字のラテン文字「で構成さ」と「B」。

Monocarpは、これら二つの文字列にしたい  のS、Sと  Tの互いに等しいトンを。彼は、次の操作を何度でも行うことができますインデックスの選択  のP O S 1列でPOS1  秒、インデックス選択  のP O S 2列でPOS2  トンのトンを、スワップ  S のP O S 1とspos1  トンのP O 2 tpos2。

あなたはMonocarpを作るために実行しなければならない操作の最小数を決定する必要が  S、Sおよび  Tトン等しい、と操作のいずれかの最適なシーケンスを印刷する-またはこれらの文字列が等しいことは不可能であると言います。

 

入力

最初の行は、一つの整数含有  N、N  1 N 2 10 5 の長さ- (1≤n≤2⋅105)  のS、Sと  Tの Tを。

2行目は1つの文字列含ま  S Sは、以下からなる  N n文字「」と「B」。

第三行は、1つの文字列を含んでい  たTからなるTを  N n文字「A」と「B」。

 
出力

それはこれらの文字列が等しいことは不可能である場合は、印刷  - 1 -1。

そうでなければ、最初の行の印刷における  k個のk -文字列を等しくするために必要な操作の最小数。次のそれぞれにおける  k個の文字列内のインデックス- K線は2つの整数を印刷  S文字列中のSおよびインデックス  のT対応するスワップ動作で使用されるべきであるT。

 

問題の意味:他の二つの線で組成物A、Bを与えられた文字列の長さは、それ以外の場合、出力の順序を変更すること、それらが等しい場合の文字は、垂直交換に等しいかどうかを尋ね-1

溶液:秒間[I]、T [i]は、2種類のみ(B)、または(B、A)、マッチングの同じ種類の残りの1つの又は2種が残っていない場合、等しくありませんそれは等しいか等しくすることはできません。

#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
typedefのペア < int型int型 > PII。

const  int型 MAXN = 2E5 + 5 チャーS [MAXN]、T [MAXN]。
ベクトル < 整数 > V1、V2; 
ベクトル <PII> ANS; 

INT のmain()
{ 
    int型LEN。
    scanf関数(" %のD "、およびLEN)。
    scanf関数(" %sの%sの"、S + 1、T + 1 )。
    以下のためのint型 I = 1 ; 私は= LENを<; 私は++ 
    { 
        もし、(S [I] == ' ' && T [I] == ' B ' )v1.push_back(I)。
        もし(S [I] == ' B ' && T [I] == ' ' )v2.push_back(I)。
    } INT lasta = 0、lastb = 0 以下のためにint型私= 1 ; iが(v1.sizeを<); I = I + 2 
        ans.push_back(PII(V1 [i]が、V1 [I - 1 ]))。
    以下のための
    int型 I = 1 ; i)は(v2.sizeを<; I = I + 2 
        ans.push_back(PII(V2 [i]は、V2 [I - 1 ]))。
    もし(v1.size()%2)lasta = V1 [v1.size() - 1 ]。
    もし(v2.size()%2)lastb = V2 [v2.size() - 1 ]。

    もし((lasta && lastb == 0)||(lasta == 0 && lastb)){ 
        のprintf(" -1 ")。リターン 0 ; 
    } 
    であれば(lasta){ 
        ans.push_back(PII(lasta、lasta))。 
        ans.push_back(PII(lasta、lastb))。
    }
    printf(" %d個の\ n " 、ans.size())。
    以下のためにint型 i = 0 ; iはans.size()<; iは++ 
        のprintf(" %D%D \ n " 、ANS [i]が1次回、ANS [I] .second)。
    リターン 0 ; 
}
コードの表示

 

おすすめ

転載: www.cnblogs.com/Yokel062/p/11615105.html
おすすめ