https://codeforces.com/contest/1243
Aタイトル 数をN、最大Qは正方形辺の長さで構成することができ、N <= 1E3、最大裏面行値バケットを出力します
B1の質問は唯一の2つの文字列が等しい作ることができる1、直接シミュレーションを交換する2つの文字列を依頼します
B2の質問 2つの長さのn小文字の文字列目に、そのような同じスイッチング周波数と少ない2N以上2つの文字列を切り替えること二つの文字列かどうかを尋ね、
それぞれの文字が表示された回数を記録し、奇数が成功することはできませんがある場合は、それ以外の場合は毎回の性格S [i]を列挙します。:
私は文字の後ろだ場合はSを持っている[J]がSに等しい[i]は、Sの交換の[J] T [i]は、
別のは、S [i]がTに等しく[j]は、最初の交換S [J] T [J]であり 、 次に交換S [J] T [i]は 、
順序を変更2N場合、各回の最大缶ベクトル<ペア<int型、int型> > 保存することができ
問題C N <= 1E12は、nは、... 1 n個のブロックは、2つijの各場合、着色される必要がある| J - I | = X、 X nは、同じ2つの色が必要非ijの因子で
依頼します最大いくつかの色に、Iは、N、P pの素因数の一方のみがあれば色の最大値が1 ...... P 1を描いていることが理解...... Pように
二つまたは二つ以上の素因数、次いで、PQ、それがある場合Mの任意の数のすべてのブロックが同じ色であるように、AP + BQ = Mのように表すことができます。
#include <ビット/ STDC ++ H> // cf599 DIV2 使用 名前空間STDを、 #defineっ長い長 の#define _for(I、B)のための(INT I =(); I <(B)、I ++) の#defineため_rep(I、B)(INT I =() ; I <=(B); I ++) の#define _per(I、B)のための(INT I =(); I> =(B); i--)ボイドtaskA(){ int型T、N。 cinを >> トン。 一方、(t-- ){ CIN >> N。 INT [ 1010 ] = {}、X、MA、RET = 0 。 _rep(I、1、n)がCIN >> X、[X] ++ ; _per(I、nは、1 ){ RET + = A [i]は、 もし(RET> = I){MA = I。休憩;} } coutの <<ミリアンペア<< てendl; } } ボイドtaskB(){ int型T、N。 cinを >> トン。 一方、(t-- ){ CIN >> N。CIN。取得(); 文字列S1、S2; getline(CIN、S1)。getline(CIN、S2)。 INT X = 0、Y = 0、CNT = 0 。 _for(I、0 、N){ もし!(S1 [I] = S2 [i])と{ CNT ++ 。 もし(!x)はx = I + 1 ; それ以外の 場合(!y)は、Y = I + 1 ; } } もし(X && Y){ X - 、y-- 。 チャー C1 = S1 [X]、C2 = S2 [Y]。 S1 [X] = C2、S2 [Y] = C1。 } // COUT << C1 << "" << C2 << "" << S1 << "S2 =" << S2 << ENDL。 0)&& S1 == S2)はcout << " はい\ n個" ; 他の裁判所未満<< " ノー\ n個" ; } } ボイドtaskC(){ int型、T、N。 cinを >> トン。 一方、(t-- ){ CIN >> N。 文字列S1、S2; CIN。取得(); CIN >> S1 >> S2; INT X = 0、Y = 0、CNT = 0、CNT1 [ 26 ] = {}、26 ] = {}; _for(I、0 、N){ CNT1 [S1 [i]が - [ A ' ] ++ ; CNT1 [S2 [i]を - ' A ' ] ++ ; } int型フラグ= 0 。 _for(I、0、26)であれば(CNT1 [I]&1){フラグ= 1。ブレーク;} もし(フラグ)COUT << " いいえ\ n " 。 他に { 場合(S1 == S2)続けます。 ベクトル <ペア< int型、int型 >> ANS; _for(I、0 、N) _for(J、I + 1 、N){ 場合(S1 [i]が== S1 [J]){ スワップ(S1 [J]、S2 [i])と; ans.push_back(make_pair(J、I)); 休憩; } そう であれば(S1 [i]が== S2 [J]){ スワップ(S2 [J]、S1 [N - 1 ])。 スワップ(S2 [i]は、S1 [N -1 ])。 ans.push_back(make_pair(N - 1 、J))。 ans.push_back(make_pair(N - 1 、I))。 休憩; } } アサート(S1 == S2)。 裁判所未満 << " はい\ n個" ; COUT << ans.size()<< ENDL。 _for(I、0、ans.size())COUT << ANS [i]が1次回+ 1 << " " << ANS [I] .second + 1 << ENDL。 } ボイドtaskD(){ LL N。cinを >> N; LL Q = SQRT(n)は、CNT = N。 _rep(I、2 、Q){ 場合(N%I)続けます。 一方、(N%I == 0)N / = I。 // coutの<< "N =" << N <<てendl; もし(N == 1)COUT << I << ENDL。 他の裁判所未満<< " 1 \ nは" ; リターン; } COUT << N << ENDL。 //taskA(); // taskB(); // freopenは( "output.txtと"、 "W"、STDOUT); // taskC(); taskD(); リターン 0 ; } / * 4 5 浸すの houhe 3 猫 、犬 2 AA AZ 3 ABC BCA * /