実際には?実際には?実際には?
私は$ \ {テキストT_T} $のキーボード数の半分を費やしてきました
$ \ {Mathbb AFO} $感やや強いです
h1はそれが少し大きくはないのですか?
ZJ + TJ:
T1
それは、どのようなデータのスケーリングであるが、それはリンクリストです。
だから、使用することができます ベクトル のSET リストのメンテナンスを。
複雑さ、それは$ O(q個の\ SQRT {N})$として認定することができます
マスターの定理でTUI何点。
$ \シータ$の平均の複雑さ。
$ O $最悪の複雑さ。
$ \ $オメガ最適な複雑。
だから、可能な限りペアの後。
したがって、このプルです。
まず、私たちのリストは、たったの$ N $のカードの合計ので、バレルによって維持され、
したがって$ \和\ limits_ {i = 1} ^ {n}はval_i = Nの$
だから、値のみの$ \ sqrtの{N} $の型を持っています。
同じくらい価値、私たちの列を作るために$ \ {1,2,3,4,5,6,7、\ cdots \} $ I $ $ $ $ヴァルに入る前に、
従って算術加算式カラムの$ \のFRACの数{(K + 1)} {2} $
アップするときに取得します。
$$
\ {整列}開始
\\ \ FRAC {(K + 1)} {2}&=&N
K&=&\のSQRT {N}
\端{整列}
$$
書式#include <iostreamの> 書式#include <CStringの> 書式#include <cstdioを> 書式#include <設定> //# "はDebug.hファイル" が含ま #define N 111111 #define M 333333 #define LL長い長いです 名前空間stdを使用。 int型のQNはCN、描かれています。 int型SIZ [M]前[M]、それ[M]; <整数> CDを設定します。 INT前[M]; インラインINT faind(INT X){ 強制(4 [X] = X!)は、4つの[X] = faind(4 [X])。 4 [X]を返します。 } ボイドは(int型B INT)団結{ = faind(A)。 B = faind(B)。 [A] B =ため、 [B] + = [A]。 } {int型のmain() int型OPT、A、B、C; scanf関数( "%dの%のD"、&CN、およびQN)。 以下のために(INT I = 1; I <= CNであり; iは++){ 4 [C] =オン。 [I] = 1。 } valは、[1] = CN; cd.insert(1)。 [1] CN =事前。 用(INT __i = 1; __ iが<= QN; __ iは++){ scanf関数( "%d個"、&OPT)。 IF(OPT == 1){ //(ヴァル、1、CN、3、 "BVAL")注ぎます。 //(CD、3、 "BeforeI")を注ぎます。 scanf関数( "%D%dの"、&、&B)。 = faind(A)、B = faind(B)。 (== b)は継続する場合は、 INTさh =あなた[A]、SB =あなた[B]、SAB =あなた[A] +あなた[B]。 団結(B) ヴァル[彼] - 。 IF(ヴァル== 0 [IN])cd.erase(); ヴァル[SB] - 。 IF(ヴァル[SB] == 0)cd.erase(SB)。 ヴァル[SAB] ++; cd.insert(SAB)。 事前[* cd.begin()] = valの[* cd.begin()]。 (自動I = cd.begin()は、i ++は;;){用 自動J =; J ++; (J == cd.end())ブレークであれば、 プレ[*のJ] =予備[* I] +ヴァル[* J]。 } //(ヴァル、1、CN、図3に示すように、 "下流")のために、 //(CD、3、 "AfterI")を注ぎます。 } 他の{ //(ヴァル、1、CN、3、 "Q")を注ぎます。 //(CD、3、 "QCD")のために、 scanf関数( "%のD"、&C); LL ANS = 0。 もし(ハ!= 0){ 自動I = cd.end()、J = cd.end(); I - 、j--。 //プット( "VVVVVVVVVVVV"); //アウト(* I);アウト(C); //プット( "^^^^^^^^^^^^"); 一方、(1){ しばらく(I = cd.begin()&&(* J) - !(* I)<C) 私 - ; もし((* J) - (* I)> = C) 年=前+ [(i *は)] * valの[(* J)]; (J == cd.begin())ブレークであれば、 j--; } } 他の{ cd.end車など=(); fi--; LL =あらかじめ[* Fiの]。 年= *(う-1)/ 2であろう。 } printf( "%LLDする\ n"、ANS)。 } } }
T2T3はピットを購入する、変更されていません