洛谷P1114 「非常男女」計畫

2022-10-09 06:27:12 字數 1075 閱讀 2826

近來,初一年的***小朋友致力於研究班上同學的配對問題(別想太多,僅是舞伴),通過各種推理和實驗,他掌握了大量的實戰經驗。例如,據他觀察,身高相近的人似乎比較合得來。

萬聖節來臨之際,***準備在學校策劃一次大型的「非常男女」配對活動。對於這次活動的參與者,***有自己獨特的選擇方式。他希望能選擇男女人數相等且身高都很接近的一些人。這種選擇方式實現起來很簡單。他讓學校的所有人按照身高排成一排,然後從中選出連續的若干個人,使得這些人中男女人數相等。為了使活動更熱鬧,***當然希望他能選出的人越多越好。請編寫程式告訴他,他最多可以選出多少人來。

第一行有乙個正整數n,代表學校的人數。n≤100000

第二行有nn個用空格隔開的數,這些數只能是0或1,其中,0代表乙個女生,1代表乙個男生

輸出乙個非負整數。這個數表示在輸入資料中最長的一段男女人數相等的子串行長度。

如果不存在男女人數相等的子串行,請輸出0。

輸入

9

0 1 0 0 0 1 1 0 0

輸出6

解題思路:字首和

遇到女生-1,遇到男生+1

如兩個字首和相等則說明這一段男生女生數量相同

裸的字首和會超時 優化

#includeusing

namespace

std;

int n,x,s[101000

];int

main()

int ma=0

;

for(int i=1; i<=n-1; i++)

for(int j=i+ma; j<=n; j++) if(s[j]-s[i-1]==0) ma=j-i+1

;

//這裡是優化,如果這一段長度小於當前最大長度,

就不用找了,所以尾巴j從i+ma開始

//男女數量相等便替換ma,由於迴圈中加了乙個ma,

所以j-i+1一定大於當前ma

cout

}

洛谷P1114 「非常男女」計畫

洛谷p1114 非常男女 計畫 map o n 列舉過去 記錄當前值最早出現的時間 x 然後當這個值在 時,出現時間為 y 時 則 x 1 y 這段男女出現次數是為一樣的,更新一下ans就行了 1 include 2 include 3 include 4 include 5 include 6 i...

洛谷P1114非常男女(字首和)

近來,初一年的 小朋友致力於研究班上同學的配對問題 別想太多,僅是舞伴 通過各種推理和實驗,他掌握了大量的實戰經驗。例如,據他觀察,身高相近的人似乎比較合得來。萬聖節來臨之際,準備在學校策劃一次大型的 非常男女 配對活動。對於這次活動的參與者,有自己獨特的選擇方式。他希望能選擇男女人數相等且身高都很...

洛谷 P1114 非常男女(線性結構)

題目大意 一連串的0和1,我們問最長的01個數相等的連續串 最長是多少 解題思路 這裡用乙個結構做乙個轉換,我們每次遇到0可以讓sum 1,遇到乙個1可以sum 1。記錄下sum在每個位置的值。然後sum值相等的位置例如j和i,讓j i就是答案。但是注意在第0個位置那裡,我們讓sum 0.廢話 1 ...