羅区P2657風の強い数

届けます

ベアデジタルDP

この問題の面で少なくとも2の要件に隣接する2つの数字の違いを見て、私たちは最後のビットの現在のレコード番号を記入

アカウントに先頭の0がんを取ります。塗りつぶしの前の数字が0の場合、0はこの1つは合法である埋めます。

emmmを参照するには、特定のコードのペア

#include <iostreamの> 
する#include <キュー> 
の#include <cstdioを> 
する#include <アルゴリズム> 
の#include <CStringの> 
する#include <cmath>
 の#define PA対<整数、整数> 
のtypedef 長い LL。
使用して 名前空間はstdを、
const  int型 INF = 214748364 ;
インラインLLリード()
{
    チャー CH = GETCHAR()。
    LL、X = 0BOOL F = 0 一方、(CH < ' 0 ' || CH> ' 9 ' 
    {
        もし(CH == ' - ')、F = 1 
        CH = GETCHAR()。
    }
    一方、(CH> = ' 0 ' && CH <= ' 9 ' 
    {
        X =(x << 3)+(X << 1)+(CH ^ 48 )。
        CH = GETCHAR()。
    }
    リターン?F - X:X;
}
LL、B、F [ 15 ] [ 10 ]、リチウム[ 15 ]、T; // のLi [i]はi番目の時の先頭セクタが最大数で表し
ボイドミリアンペア(R&LT LL)
{
    T = 0 
    memset(LI、0はsizeof (LI))。
    一方、(R)
    {
        リチウム[ ++ T] = Rの%10 
        R / = 10 
    }
    
}
ゾルLL(int型、今int型 LST、BOOLリム、BOOLのAl)を// 今最初の場所内のエントリの今、LSTは、充填の数字であり、LIMは、上部境界かどうかを示し、Alはフロントが0であるか否かを示す
{
     IF(今== 0リターン 1 ;
     IF - (アルリム&& && F [今] [LST] =!1リターン[今] [LST] F;
     int型 =リムのLi [今] :?アップ9 
    LL RTN = 0 以下のためにint型私= 0私は++;;私は<=アップ
    {
        もし((ABS(LST-I)< 2)&&アル!)続けます
        RTN + =ゾル(NOW- 1、I、(LIM &&(I ==アップ))、((I == 0)&& AL))。
    }
    もし [今] [LST] = F(AL && LIM!)RTN。
    リターンRTN。
}

int型のmain()
{
    memsetの(F、 - 1はsizeof (F))。= READ(); B = 読み取ります()。
    ミリアンペア(B); // 最初のペア[1、B再び係合 
    LLをANSソル=(T、011 );
    ミリアンペア(A - 1); // 再度[1、-1]再び係合 
    LLソルAN =(T、011 ); - = 年。
    printf(" %dの" 、ANS)。
}

 

おすすめ

転載: www.cnblogs.com/lcez56jsy/p/11355812.html