廣播操比賽

2021-09-28 15:33:32 字數 1945 閱讀 9043

【問題描述】

xmyz一年一度的運動會開始了,作為本次活動的第乙個集體專案,段長林老師特別重視,經過調查研究,林老師發現當身高接近,而且男女生人數相等時,列隊做操是最整齊的。但是按評分的要求,參加的人數越多分數越高,於是林段想到乙個辦法:他讓年段所有同學按照身高排成一排,然後從中選出連續的若干個人,使得這些人中男女人數相等。根據評分規則,林老師當然希望他能選出的人越多越好。請編寫程式告訴他,他最多可以選出多少人來。

【輸入】

第一行有乙個正整數n,代表年段的人數。

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

【輸出】

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

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

【輸入輸出樣例1】

0 1 0 0 0 1 1 0 0

樣例說明:

選擇第2個人至第7個人可以獲得男女人數均為3的最長子序列。

【限制】

對於30%的資料,n<=100;

對於50%的資料,n<=1 000;

對於100%的資料,n<=100 000

顯然dp啊

先看zkq的n^2暴力

#pragma gcc optimize(2)

#include

#include

const

int n=

100100

;bool a[n]

;int sum[n]

;int n,m,mid;

int ans;

inline

void

read

(int

&x)while

(c<=

'9'&&c>=

'0') x=

(x<<1)

+(x<<3)

+c-'0'

,c=getchar()

; x=f==

1?x:

-x;}

inline

void

readbl

(bool

&x)if

(c==

'1')x=1;

}using

namespace std;

intmain()

if(sum[n]

==n||sum[n]==0

)if(n&1

) m=n-1;

else m=n;

for(

register

int l=m;l>=

2;l-=2

)}}}

我也不知道咋做的 dp

#include

#define re register

#define read(x)\

\ while((c>='0'&&c<='9'))\

\x=x*f;\

}#define max_(x,q)\

(xusing

namespace std;

int ans,n,a[

1000001

],l[

1000001

],r[

1000001

],g,b,t=n;

intmain()

if(g==

0||b==0)

for(

int i=

1;i<=n;i++

)for

(int i=

0;i<=

2*n;i++

) ans=

max_

(ans,r[i]

-l[i]);

printf

("%d"

,ans)

;}

對Numpy廣播操作的理解

1.首先檢查兩個矩陣維數是否相同,若不同,對維數少的補一。注意這裡的維數不是指n行d列中的n和d的值,對於一般的矩陣維數就是2。若乙個兩維的矩陣 n,d 和乙個一維的陣列 m,相乘,補一操作就是將那個一維的陣列變為 1,m 補一總是在shape陣列的開始補一。2.輸出陣列是輸入陣列各維度 軸 的最大...

Flink實操 廣播變數 累加器 分布式快取

三 累加器 四 分布式快取 flink支援廣播。可以將資料廣播到taskmanager上,資料儲存到記憶體中。資料儲存在記憶體中,這樣可以減緩大量的shuffle操作 比如在資料join階段,不可避免的就是大量的shuffle操作,我們可以把其中乙個datastream廣播出去,一直載入到taskm...