牛客NC14583 糖糖別胡說,我真的不是簽到題目

2021-10-16 05:06:34 字數 732 閱讀 5131

從前,有n隻萌萌的糖糖,他們分成了兩組一起玩遊戲。他們會排成一排,第i只糖糖會隨機得到乙個能力值bi。從第i秒的時候,第i只糖糖就可以消滅掉所有排在他前面的和他不是同一組的且能力值小於他的糖糖。

為了使遊戲更加有趣,糖糖的爸爸,嬌姐,會發功m次,第i次發功的時間為ci,則在第ci秒結束後,b1,b2,…,bci都會增加1.

現在,嬌姐想知道在第n秒後,會有多少只糖糖存活下來。

#include

using

namespace std;

const

int n=

5e4+10;

int t,n,m;

int a[n]

,b[n]

,sum[n]

;int

main()

for(

int i=

1,r;i<=m;i++

)for

(int i=

1;i<=n;i++

) sum[i]

+=sum[i-1]

,b[i]

+=sum[i]

;int m0=

0,m1=0;

int ans=0;

for(

int i=n;i>=

1;i--

)printf

("%d\n"

,ans);}

return0;

}

牛客演算法入門題 糖糖別胡說,我真的不是簽到題目

題目鏈結 解題思想 差分 字首和 解題思路 對於n個糖糖,每個有能力值bi,對整個糖糖陣列進行ci次操作,每次操作完bi 1,對於每次判斷哪些糖糖會被消滅,如果暴力的話每次都要掃瞄ci之前的區間以判斷在ci之 前和第i個糖糖不同組且bi更小的,顯然這樣的話至少是n方的複雜度,但是空間限制數量級約是1...

牛客 糖糖別胡說,我真的不是簽到題目(思維 差分)

首先如果乙個糖糖被消滅,那麼一定是後面的不同組的糖糖的最大值比他要大 因此我們只需要倒著求最大值就行了 問題是發功的解法,發功其實就是給1 ci的數加上1,因此只要先把發功的影響算出來,加到原陣列上就可以 因為比如在3處發功,1 3都會 1,所以對相對關係沒有影響。只有在3前面的發功才會對3和1的關...

糖糖別胡說,我真的不是簽到題目

從前,有n隻萌萌的糖糖,他們分成了兩組一起玩遊戲。他們會排成一排,第i只糖糖會隨機得到乙個能力值bi。從第i秒的時候,第i只糖糖就可以消滅掉所有排在他前面的和他不是同一組的且能力值小於他的糖糖。為了使遊戲更加有趣,糖糖的爸爸,嬌姐,會發功m次,第i次發功的時間為ci,則在第ci秒結束後,b1,b2,...