week11作業題 D 必做題11 4

2021-10-05 22:33:18 字數 1406 閱讀 3630

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

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

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

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

input

輸入:第一行:乙個整數n(2≤n≤100000),壽司序列的長度。

第二行:n個整數(每個整數不是1就是2,意義如上所述)

output

輸出:乙個整數(代表東東可以選擇的最長的一段連續的且合法的壽司)

examples

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

這裡我用a陣列儲存輸入的數字串,num陣列儲存連續數字的個數。然後使用雙指標的方法,選取滿足條件序列中數目最小數字的個數,然後選出所有的裡面數目最大值。最後需要注意輸出的值應該是ans的兩倍。

#include

#include

#include

#include

#include

using

namespace std;

#define _for(i,a,b) for(int i = (a); i < (b); i++)

#define _rep(i,a,b) for(int i = (a); i <= (b); i++)

const

int maxn =

1e5+

100;

int n,ans;

int a[maxn]

;int num[3]

;int

main()

int l,r;

// int flag = 1;

l =0,r =0;

while

(l < n && r < n)

num[a[l]

]= r-l;

l = r;

int m =

min(num[1]

,num[2]

);ans =

max(ans,m);}

cout << ans *2;

}

Week11作業 A 必做題 11

題目 蒜頭君從現在開始工作,年薪 n 萬。他希望在蒜廠附近買一套 60 平公尺的房子,現在 是 200 萬。假設房子 以每年百分之 k 增長,並且蒜頭君未來年薪不變,且不吃不喝,不用交稅,每年所得 n萬全都積攢起來,問第幾年能夠買下這套房子?第一年年薪 n 萬,房價 200 萬 輸入格式 一行,包含...

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 個的壽司被連續的放置在桌子上 有序 東東可以選擇一段連續的壽司來吃 東東想吃鰻魚,但是東妹想吃金槍魚。核 平 起 見,他們想選擇一段連續的壽司 這段壽司必須滿足金槍魚的數量等於鰻魚的數量...