貪欲な思考+ --cf1042D

/ * 
まず明らかに1より大きく、多くの場合、0に貢献し、戻ってから計算LISを考える
1がある場合、CNT1 ++、およびCNT1のLISで更新し、リス++、0が存在する場合
、これは貪欲正しいことを確認一つのそのような構成は、現在より表面0の期間の後の段落0必ずしも以前この段落LISの[I、J]は、明らかにLIS + 1ため、
より多くの表面は、現在である場合1場合にのみ間隔1 、LIS + 1を作るために、LISの数よりも多い
[iは、j]はサフィックス[I、n]は、すべての間隔で、1S LISの数よりも大きい場合にそうとする場合にのみ、この効果は1と同等でした、よい代わり
* / 
の#include <ビット/ STDC H ++>
 使用して 名前空間STD;
 の#define N 200005
 チャーS [N]、T [N];
 int型のmain(){
     int型 N-; CIN >> S; 
    N- = STRLEN(S );
     INT LIS = 0、CNT1 = 0 ;
     のためのINT I = N- 。1; I> = 0 ; i-- ){
         もし、(S [I] == ' 0 ')LIS ++  CNT1 ++ ;
        もし(CNT1> LIS){ 
            T [I] = ' 0 ' 
            LIS = CNT1。
        } 
         T [I] =のS [i]は、
    } 
    COUT << T。
}

 

おすすめ

転載: www.cnblogs.com/zsben991126/p/11512984.html