NOIPボード

1.最短

  • シングルソースの最短

        (1〜N)

// SPFA算法

の#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 const int型の N = 15000 ; 構造体扁{ int型のX、Y、D、次。 }。 INT 最後[N]、LEN、D [N]。 INT 一覧[N]、尾、頭、V [N]; 扁[ 210000 ]。 ボイドイン(int型のx、int型の Y、int型d)は { lenの ++ [LEN] .X = X; [LEN] .Y = Y; [LEN] .D = D。 [LEN] .next = 最後[X]。 最後[X] = LEN。 } INTのmain() { int型N、M、X、Y、C、ST、ED。 scanf関数(" %d個の%のD "、&​​N、&M)。// 点、边 ためint型 I = 1 iは++; I <= M {) のscanf(" %D%D%D "、およびX&Y、&C)。 イン(X、Y、C)。 イン(Y、X、C)。 } のためにint型 i = 1 ; iがn = <; iは++)Dは[I] = 9999999999 ST = 1 ; ED = N。 dは[ST]は = 0 ; V [ST] = 1 リスト[ 1 ] = ST;ヘッド= 1 ;尾= 2 ; 一方、(!ヘッド= 尾){ X = リスト[ヘッド]。 int型 ; kはkは= K =最後[X] {.next [K])を 、Yは = [K]・Yと、 もし(D [Y]> D [X] + [K] .D){ D [Y] = D [X] + [K] .D。 もし(V [Y] == 0 ){ V [Y] == 1 リスト[尾] = Y。 ++ ; もし(尾== N + 1)尾= 1 } } } リスト[ヘッド] = 0 ; ヘッド ++ ; もし(ヘッド== N + 1)ヘッド= 1 V [X] = 0 ; } のprintf(" %dの" 、D [N])。 }

 2.高速パワー

インラインLLのMUL(-1,11,11-のB、LL MOD){ 
    LL ANS = 1 一方、(b)は、{
         もし、(B&1)ANS = ANS *%のP。= A *%pを。B >> = 1 
    } 
    戻り ANS%のMODと、
}

 3.ユークリッドを拡大

ボイド ex_gcd(int型int型 B、INT&X、INTY){
     場合(B)ex_gcd(B、%のB、Y、X)、Y - =(/ B)* X。
    そうでなければ、X = 1、Y = 0 
}

 

おすすめ

転載: www.cnblogs.com/phemiku/p/11390825.html