Educational Codeforces Round 28 簡單題解

A數組

給出一個01數組,問這個數組至少去掉多少個數,相對位置不變,spa

而且要求:每個1後面的全部數都是1排序

 

要不把全部1去掉class

要不數組是0...01...1形式,這種只須要枚舉1的位置,就好了時間

 

Bnew

有n個問題,每一個問題有k個子問題,1 <= n,k <= 45枚舉

作出任何一個問題的第i個子問題須要t[i]時間,得1分

若是某個問題的k個問題所有解決了,還會再獎勵1分

如今你有M的時間,0 <= M <= 2 * 10^9,問最多能得多少分

 

貪心

枚舉解決了x個問題,得了x * (k + 1)分,把剩餘的子問題按照t的大小排序,而後用剩餘的時間貪心去作,看能作多少子問題,能得多少分

 

C

有一個數組,長度n,1 <= n <= 5000,元素多是負數,數組從0開始

sum(l,r)表示數組區間[l,r)的元素之和

如今要你找3個數,x,y,z,知足:

1.0 <= x <= y <=z <= n

2.sum(0,x) - sum(x,y) + sum(y,z) - sum(z,n)最大

 

注意,這道題目i == j時,sum(i,j)表示[i,i),沒有元素,值爲0

咱們枚舉y的位置,把數組分紅[0,y),[y,n),而後對2個部分都要找一個分隔點,其實就是2個相同的子問題

因此,先枚舉y,對每一部分再求分隔點就能夠了

 

D

有一個n * m的矩陣,開始時矩陣元素都爲0,有q個操做,第i個操做xi,yi,ti,表示從ti時間開始a[xi][yi] = 1

問最少什麼時間,矩陣有一個k * k的子矩陣,子矩陣全爲1

 

二分時間,就好了

 

E

題意不想說了

 

樹dp,就好了

 

F

給出一個數組

f(l,r) = 數組[l,r]區間中的不一樣的數的個數,如今隨機選擇l,r,求f(l,r)的指望


1.從題意看,if l != r,則選到l,r的機率是2 / n / n if l == r,則選到l,r的機率是1 / n / n

2.pre[i]記錄a[i]上一次出現的位置,直接算出每個位置對指望的貢獻

   每個位置對指望的貢獻 = 這個位置有貢獻的機率 * 1

相關文章
相關標籤/搜索