#578収集カード

[タイトル説明:

スターは、週刊誌が発行される注文する予定ですが、彼は読書が、カードのセットのためではありません。

雑誌を発行するN週知られている(すなわち、N段階)、各問題には、カードが付属しています。さまざまな方法を通じてスター、N雑誌が来るカードのタイプを理解しています。スターは、ちょうどいくつかの連続した期間を命じ、期間中のカードのすべての可能なタイプを集めました。今、彼はあなたが最小期間を注文する必要がどのくらい、知りたいです。

[入力説明:

整数Nの最初の行。

i番目のカードのi番目の文字のタイプを示す長さN、大文字または小文字の文字列の2行目は、カードを示す各文字(大文字と小文字を区別)が来ます。

[出力]説明:

出力ライン期間スター最小注文の数を表す整数。

[サンプル入力]:

8
acbbbcca

[]出力例:

3

[サンプル]説明:

[時間制限、およびデータの説明の範囲:

時間:1秒容量:256M

データの30%、N≤300。

データの40%、N≤2000。

データの60%、N≤5000。

データの80%、N≤100000。

データの100%、N≤500000します。

 

 

書式#include <アルゴリズム> 
書式#include <iostreamの> 
の#include <CStringの> 
の#include <cstdioを> 
する#include <cmath> 
の#include <キュー> 
std名前空間を使用しました。
[500610]をINT、N。
チャーX。
int型P [200]、Q [200]、NUM、今、ANS = 2147483647。
INTメイン(){ 
	scanf関数( "%d個の%のC"、&N、&x)は、
	以下のために{(INT i = 1; iが++; iが<= N)
	    のscanf( "%のC"、およびX)を、
	    [I] = xと; 
	    (!P [I] = 1){もし
		    P [I]] ++; 
		    Q [++ NUM] = [I]。
		} 
	} 
	int型K = NUM。
	以下のために{(INT i = 1; iが++; iが<= n)は
		今= 0。
		用(INT J = 1; J <= K; J ++){ 
			P [Q [J] = 0; 
		} 
		(INT J = 1; J <= I。
		    もし(P [J]] == 1){ 
		    	今++。
		    } 
		} 
		もし(現在== K){ 
			のprintf( "%dの"、I)。
			0を返します。
		} 
		のための(int型J = I + 1、J <= nであり、j ++){ 
			P [JI] - 。
			もし(P [JI]] == 0){ 
				now--。
			} 
			P [J] ++; 
			もし(P [J]] == 1){ 
				今++。
			} 
			もし(現在== K){ 
				のprintf( "%dの"、I)。
				0を返します。
			} 
		} 
	} 
	0を返します。
}

  

おすすめ

転載: www.cnblogs.com/xiongchongwen/p/11517926.html