Week11作業 D 必做題11 4 模擬

2021-10-05 16:11:21 字數 914 閱讀 9529

東東和他的女朋友(幻想的)去壽司店吃晚餐(在夢中),他發現了乙個有趣的事情,這家餐廳提供的 n 個的壽司被連續的放置在桌子上 (有序),東東可以選擇一段連續的壽司來吃

東東想吃鰻魚,但是東妹想吃金槍魚。核 平 起 見,他們想選擇一段連續的壽司(這段壽司必須滿足金槍魚的數量等於鰻魚的數量,且前一半全是一種,後一半全是另外一種)我們用1代表鰻魚,2代表金槍魚。

比如,[2,2,2,1,1,1]這段序列是合法的,[1,2,1,2,1,2]是非法的。因為它不滿足第二個要求。

東東希望你能幫助他找到最長的一段合法壽司,以便自己能吃飽。

用num1和num2來記錄一串連續的1和2的個數,用now1和now2來表示當前索引之前的區間是全1還是全2。

若在區間1裡又讀到1,則num1++;否則讀到了2,此時區間可能為12或212,要更新答案為之前的12相等個數,然後清空開始的2的個數,讓num2=1,並記錄當前區間為2,即now2=1,now1=0。區間2同理。

一道模擬題,考察對連續區間的處理。

#include

using

namespace std;

int n;

int a[

100010];

int ans=0;

//有幾個1,即ans為答案的一半

int num1=

0,num2=0;

//當前索引i之前的區間有多少1和2

bool now1=

0,now2=0;

//之前區間是1還是2

intmain()

}else

if(a[i]==2

)}}//處理結尾的兩個區間

ans=

max(ans,

min(num1,num2));

cout<2<}

week11作業D 必做題11 4

樣例 input 72 2 2 1 1 2 2 output 4input 61 2 1 2 1 2 output 2input 92 2 1 1 1 2 2 2 2 output 6這題用滑窗的思想解決。具體細節和注釋都在 裡。include using namespace std int a 1...

Week11 作業 D 必做題11 4

一 題目描述 題面 東東和他的女朋友 幻想的 去壽司店吃晚餐 在夢中 他發現了乙個有趣的事情,這家餐廳提供的 n 個的壽司被連續的放置在桌子上 有序 東東可以選擇一段連續的壽司來吃 東東想吃鰻魚,但是東妹想吃金槍魚。核 平 起 見,他們想選擇一段連續的壽司 這段壽司必須滿足金槍魚的數量等於鰻魚的數量...

Week11 作業D 必做題11 4

東東和他的女朋友 幻想的 去壽司店吃晚餐 在夢中 他發現了乙個有趣的事情,這家餐廳提供的 n 個的壽司被連續的放置在桌子上 有序 東東可以選擇一段連續的壽司來吃 東東想吃鰻魚,但是東妹想吃金槍魚。核 平 起 見,他們想選擇一段連續的壽司 這段壽司必須滿足金槍魚的數量等於鰻魚的數量,且前一半全是一種,...