t2艱難的抉擇
1.yzx已經當過多次「媒人」了。他因此獲得了許多經驗。例如,距yzx觀察,身高相近的人似乎比較合得來。
yzx在學校策劃了一次大型的「非常男女」配對活動。對於這次活動的參與者,yzx有自己獨特的選擇方式。他希望能選擇男女人數相等且身高都很接近的一些人。這種選擇方式實現起來很簡單,他讓學校的所有人按照身高排成一排,然後從中選出連續的若干個人,使得這些人中男女人數相等。yzx當然希望他能選出的人越多越好,請告訴他最多可以選出多少人來。
第一行有乙個正整數n,代表學校的人數。
第二行有n個用空格隔開的數,這些數只能是0或1,其中,0代表乙個男生,1代表乙個女生。
乙個非負整數,表示最長的一段男女人數相等的子串行長度(如果不存在男女人數相等的子串行輸出0)。
0 1 0 0 0 1 1 0 0
30%的資料,n<=100。
50%的資料,n<=1000。
100%的資料,n<=100000。
也就是非常男女那道題,考試的時候寫了乙個最壞n^2的演算法,自己出了資料都卡掉了,然而在比賽的時候就ac了。尷尬
來說正解:
int sum
每當有乙個漢子的時候,就給這個數字加一
當有妹子的時候,就-1
這時候,如果乙個位置的sum和另外乙個位置的sum相等的話,就證明這兩個位置之間的妹紙和漢子是相等的
估計你已經想出來n^2的做法了吧
這個時候,就要雜湊了,將所有的sum相等的存在一起,對於每個出現過的sum,都計算一下它的標號中的極差,(也就是最大值減最小值)
極差中的最大值就是答案
#include#include#include#include#include#include#includeusing namespace std;
const int maxn=100005*3;
vectorp[maxn];
int n,a;
int sum;
int ans;
const int has=100005;
int main()
int lm=has+n;
for(int i=has-n;i<=lm;i++) }
cout<
筆試基礎歸納 8 22
a 待處理資料的狀態 b 處理器的速度 c 問題的規模 d 程式所佔空間答案是 ac 比如說快排,初始資料的順序影響快排的時間複雜度。a 遞迴下降分析法 b 分析法 c ll 1 分析法 d 算符優先分析法答案d 遞迴下降法和ll 1 都是自頂向下的分析法。a 二維以上的陣列其實是一種特殊的廣義表 ...
《演算法概論》習題8 22
題目 在任務排程中,常常會用到圖。其中節點對應任務,任務i到任務j的有向邊表示i是j的先期條件。這樣的圖描述了排程問題中的任務先後關係 約束 顯然,乙個排程是可行的當且僅當該圖無環 如果排程不可行,我們需要求使其無環所需的最小約束數量。給定乙個有向圖g v,e 子集e e稱為反饋弧集合是指 將其移除...
822 翻轉卡片遊戲
在桌子上有n張卡片,每張卡片的正面和背面都寫著乙個正數 正面與背面上的數有可能不一樣 我們可以先翻轉任意張卡片,然後選擇其中一張卡片。如果選中的那張卡片背面的數字x與任意一張卡片的正面的數字都不同,那麼這個數字是我們想要的數字。哪個數是這些想要的數字中最小的數 找到這些數中的最小值 呢?如果沒有乙個...