トピックポータル
問題解決のアイデア:
崇拝者に-1に設定賛美、1アセテートA、および接頭辞を求めて、F [i]はi番目の個々の部屋のために必要な最小数を表します。
ACコード:
1の#include <iostreamの> 2の#include <cstdioを> 3の#include <CStringの> 4の#include <cmath> 5 6 使用して 名前空間STDを、 7 8 整数 N、M、[ 2501 ]、J、Y、F [ 2501 ]和[ 2501 ]。 9 10 INT メイン(){ 11 のmemset(F、0x3f3f3f、はsizeof (F))。 12 のscanf(" %D%D "、&N、&M)。 13 のために(INT I = 1; I <= N。I ++ ){ 14 のscanf(" %dの"、および[I])。 15 であれば([I] == 2)和[I] =和[I- 1 ] - 1 。 16 他和[I] =和[I- 1 ] + 1 。 17 } 18 F [ 0 ] = 0 ; 19 のために(INT iが= 1 ; iが<= N; I ++ ) 20 のための(INT J = 1 ; J <= I; J ++ ) 21 IF(ABS(SUM [I] - SUM [J- 1 ])== I - J + 1 || ABS(SUM [I] - SUM [J- 1 ])<= M) 22は、 // 全て等しく、この期間またはこれ以上の数mより両方によって 23は F [I] =分(F [I]、F [J- 1 ] + 。1 ;) 24 のprintf(" %のD " 、F [N-]); 25 リターン 0 ; 26のIS }