LightOJ - 1151蛇と梯子

1151 - Laigtoj

アイデア:

所望のDP [x]は独立変数として、それが所望の値にガウスの消去法のセットのための方程式を解く、再帰方程式と見なすことができる解決することができます

逆のプロセスを解決するためのガウスの消去は、注意の必要な、定数項境界例をプッシュするプロセスであり、それは6 / D、1でありません

コード:

#pragma GCCの最適化(2)
 の#pragma GCCの最適化(3)
 の#pragma GCCの最適化(4)
の#include <ビット/ STDC ++ H>
 使用して 名前空間STD。
#define Y1 Y11
 の#define Fiの第一
 の#define SE第二
 の#defineのPI ACOS(-1.0)
 の#defineが長い長いLL
 // の#define MP make_pair 
の#define PB emplace_back
 の#define LS RT << 1、L、M
 の#define RS RT << 1 | 1、M + 1、R
 の#define ULL符号なしのLL
 の#define PLL対<LL、LL>
 の#define PLI対<LL、整数>
 の#definePII対<整数、整数>
 の#define PIII対<PII、整数>
 の#define PDD対<二重、二重>
 の#define MEM(A、B)のmemset(A、B、はsizeof(A))
 の#defineデバッグ(X) CERR << #X << "=" << X << "\ nを";
#define FIO IOS :: sync_with_stdio(偽); cin.tie(0); cout.tie(0)。
// ヘッド

のconst  int型 N = 105 ;
ダブルA [N] [N]。
ボイドガウス(int型N){
     ためint型 i = 0 ; iがn <; iは++ ){
         int型 R = I。
        J =は+ 1をJ <N; J ++ 場合(ファブ([J] [I])>ファブ([R] [I]))、R = J。
        もし(R = I!)のためにINT J = 0 ; J <= N; J ++ )スワップ([R] [J]、A [i]は[J])。

        INT - ; J> I = J J = N ){
             ためのint型 K = I + 1 ; K <N ++ k個
                A [K] [J] - = A [K] [I] / A [i]は[I] * [I] [J]。
        } 
    }が

    ためint型 I = N - 1 ; I> = 0 ; I -){
         ためのint型 J = I + 1、J <N; J ++ 
            A [i]が[N] - = A [j]と[N] * A [I] [J]。
        [I] [N] / = A [i]は[I]。
    } 
} 
int型 [に対して、B、Tを、nは、105 ]。
INT メイン(){ 
    scanf関数(" %のD "、&T)。
    INT CS = 1 ++; CS <= T {CS)
        のscanf(" %d個"、&N)
        以下のためのint型私は=1 ; 私は= < 100 ; ++ I)への[I] = 0 ;
        以下のためにint型 i = 1 ; iは= N <; ++ I)のscanf(" %d個の%のD "、&​​、&B)、[A] =を、B。

        以下のためにint型 i = 0 ; iは= < 100 ; ++ I)のためにint型 J = 0 ; J <= 100 ; ++ j)のA [i]は[J] = 0 ;
        以下のためにint型 i = 1 ; iは= < 100 ; ++ I){ 
            [I - 1] [I- 1 ] = 1 もし([I]に){ 
                [I - 1 ] [[I]に- 1 ] = - 1 
            } 
            {
                 int型のx =分(6100 - I)。
                INTの J = 1 ; J <= xと; ++ J){ 
                    [I - 1 ] [I + J- 1 ] = - 1.0 / X。
                } 
                もし(I < 100)A [I-1 ] [ 100 ] = 6.0 / X。
            } 
        } 
        ガウス(100 )。
        printf(" ケース%D:%.10fする\ n "、CS、A [ 0 ] [ 100 ])。
    } 
    戻り 0 
}

 

おすすめ

転載: www.cnblogs.com/widsom/p/11203088.html