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