問題の説明
アヴィンはシリーズを検討しています。シリーズは、以下の条件が満たされた場合に「波」と呼ばれている:
1)それは少なくとも2つの要素を含んでいます。
2)奇数の位置のすべての要素は同じです。
3)も位置のすべての要素は同じです。
4)奇数の位置の要素であっても位置の要素と同じではありません。
あなたは長さnのシリーズを与えられています。アヴィンは最長の「波」サブシリーズを見つけることが求められます。サブシリーズは、シリーズのサブシーケンスです。
1)それは少なくとも2つの要素を含んでいます。
2)奇数の位置のすべての要素は同じです。
3)も位置のすべての要素は同じです。
4)奇数の位置の要素であっても位置の要素と同じではありません。
あなたは長さnのシリーズを与えられています。アヴィンは最長の「波」サブシリーズを見つけることが求められます。サブシリーズは、シリーズのサブシーケンスです。
入力
最初の行は二つの数字N、C(100≤1≤N、000、100≤1≤C)を含んでいます。2行目は、その範囲[C 1]は、シリーズを表し、n個の整数を含みます。常に「波」サブシリーズがあることが保証されています。
出力
最長の「波」サブシリーズの長さを出力します。
サンプル入力
5 3 1 2 1 3 2
サンプル出力
4
問題の意味
N個の整数の配列に、同じ番号で同じ偶数ビット、奇数ビットを満たすシーケンス番号、及び異なるパリティビットの数を求めて、1〜Cの範囲の整数です。
最も長いシーケンスの出力長は、要件を満たすことができます。
問題の解決策
質問の意味は、配列カバレッジのみ1〜C(100≤1つの≤c)があり、Qiuzi 2つだけのシーケンス番号を発見し、二つの数は、二つの元の配列から抽出し、ペアワイズマッチングを列挙することができます数字のシーケンス、同一の要素及び要素に隣接する配列。
(211122) - >(212)最長長さはまた、所望された後、要素の最も長い長さを有する合成配列の長さは、2つのエネルギー・シーケンス、得られた数値の組み合わせの全てが完全列挙で構成することができます。
コード
#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 INTのN、M。 typedefのペア < int型、int型 > のp; ベクター <P> G [ 105 ]。 int型CMP(PA、PB) { 戻り a.first < b.first。 } int型のmain() { scanf関数(" %D%dの"、&N、&M)。 用(int型 iは= 1 ; iが<= N iが++ ) { int型のX; scanf関数(" %d個"、&x)は、 G [X] .push_back(P(I、X)); } INT MAXN = 0 。 以下のために(int型 I = 1 ; I <= M; iは++ ) { ための(int型 J = I + 1、J <= Mであり、j ++ ) { 場合(G [i]が.size()&& G [J] .size() ) { ベクトル <P> V。 用(INT Z = 0 ; Z <G [I] .size(); Z ++ ) { v.push_back(G [i]が[Z])。 } 用(INT Z = 0 ; Z <G [J] .size(); Z ++ ) { v.push_back(G [J] [Z])。 } ソート(v.begin()、v.end()、CMP)。 INTの和= 0 、フラグ。 用(INT Z = 0 ; Z <v.size(); Z ++ ) { 場合(Z軸== 0)合計++、フラグ= V [Z] .second。 それ以外の 場合(!V [Z] .second =フラグ)合計++、フラグ= V [Z] .second。 } MAXN =MAX(MAXN、合計)。 } } } のprintf(" %d個の\ n " 、MAXN)。 }
コードタイムアウトエッジ、汗!!