ccfcsp 202109 2 非零段劃分,差分

2022-10-05 16:30:19 字數 1722 閱讀 5474

目錄參考文章

題目傳送門

利用差分的思想,每當遇到乙個a[i] < a[i+1]的時候,就將對應的對於p = a[i-1] + 1a[i]這個區間內的所有p的非零劃分的數量+1(這就轉換到了差分的思路)

然後使用字首和統計p所有可能的取值對應的非零段的數量,去最大值即可

注意這裡只需要統計上公升段(或者只統計下降段也可以)

只統計上公升段

#include#include#includeusing namespace std;

const int n = 500010;

int di_max;

vectorpeeks; // 所有峰值點

int a[n];

int b[n];

int n;

void add(int l, int r)

int main()

if(maxa < a[i]) maxa = a[i]; }

int res = 0;

for(int i = 1; i <= maxa; i++)

cout << res << endl;

return 0;

/*暴力60

scanf("%d", &n);

int maxx = 0;

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

int res = 0;

for(int p = 1; p <= maxx; p++)

// cout << cnt << endl;

res = max(res, cnt);

} cout << res;

return 0;

*/ /* 得分為0

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

int res = 0;

for(auto t : peeks)

cout << res;

return 0;

*/}

只統計下降段

#include#include#includeusing namespace std;

const int n = 500010;

int di_max;

vectorpeeks; // 所有峰值點

int a[n];

int b[n];

int n;

void add(int l, int r)

int main()

if(maxa < a[i]) maxa = a[i]; }

int res = 0;

for(int i = 1; i <= maxa; i++)

cout << res << endl;

return 0;

}

\(o(n)\)

python 第一行非零 Numpy選擇非零行

您可以使用data 0來檢測所有的零,這將給您乙個布林陣列,然後沿著它的每一行執行np.any。或者,您可以使用data 0檢測所有非零,然後執行np.all來獲得沒有任何零的行掩碼。在 還可以使用 來替換 我個人認為這很瘋狂,但這是乙個好方法,因為它給我們帶來了顯著的效能提公升,我們稍後將在本解決...

non zero sum game 非零和博弈

剛剛從ted。com聽到乙個 非零和博弈 的概念,有點領悟,在假期時候希望能給大家的智慧型帶來乙個搔癢作用 首先我要說明,我不是經濟學家,所以不是從經濟學角度去看這個問題。我是職業經理人,一直認為做好事先要做好人,做好人要有良好的心態,我是從心態這個角度去看 零和博弈 相信很多人都聽過 零和博弈 這...

非零環繞規則

canvas填充的非零環繞規則 從區域內往外畫一條足夠長的線,線與順時針路徑相交,計數器 1,與逆時針路徑相交,計數器 1,計數器最終不為0則填充 水平方向上 margin left padding left border left width border right padding right ...