牛客練習賽69 B

2021-10-09 09:23:18 字數 1227 閱讀 7664

題意:給定n

nn個數,乙個x

xx表示可以劃分成最多x

xx個串,乙個y

yy表示在乙個串中最多選擇y

yy個數。最後求∑i=

1x∑j

=1yv

al(i

,j

)\sum_^x\sum_^yval(i,j)

∑i=1x​

∑j=1

y​va

l(i,

j),v al

(i,j

)val(i,j)

val(i,

j)為:將n

nn個數劃分成i

ii個串,在每個串中選擇j

jj個最大的數他們的和。

資料範圍:1≤n

≤105

,1≤a

i≤10

9,x×

y≤

n1\leq n\leq 10^5,1\leq a_i\leq 10^9,x\times y\leq n

1≤n≤10

5,1≤

ai​≤

109,

x×y≤

n 題解:考慮下將n

nn個數分成i

ii個串,那麼總共需要選擇i×j

i\times j

i×j個數。其實就是選擇前i×j

i\times j

i×j個最大的數。當乙個串中數的個數大於j

jj,那麼該串的[j+

1,cn

ti

][j+1,cnt_i]

[j+1,c

nti​

]這些數一定都不會被選擇。但是考慮下可能這些數是前i×j

i\times j

i×j個最大的數之一,所以如果存在這種情況,這樣的串就會被再次切割到其他串中。最終一定能保證每個串中取到的一定是前i×j

i\times j

i×j個最大的數。

**:

#include

using

namespace std;

const

int n =

1e5+10;

int q[n]

, n, x, y;

long

long t[n]

;int

main()

牛客練習賽 69

第一次打牛客直接。y1s1牛客的評測系統真的慢,搞得我不想交 題目鏈結 首先先對陣列a逆序貪心可得val i,j a1 a2 ai j val i,j a 1 a 2 dots a val i,j a 1 a 2 ai j 嘗試證明 分析可知我們最終會選擇i j i ji j個陣列a的數,貪心肯定每...

牛客練習賽4 B

思維題,把 i2 j2 ai2 aj2 絕對值符號去掉後,我們設i2 j2 ai2 aj2 j2 i2 aj2 ai2 j2 aj2 i2 ai2 或者 i2 j2 ai2 aj2 j2 i2 aj2 ai2 ai2 i2 aj2 j2 原式化簡後只有這兩種形式,那麼我們可以設定兩個陣列a n b ...

《牛客練習賽28 B》

這題主要就是多了乙個平方和的操作。我們維護平方和的值的時候。需要注意在下放的時候,要先把乘法之後的sum1算出來,這對算sum1最終的值沒有影響。但是對sum2的值有影響。因為我們在計算中就在更新adtag的值,所以這個adtag它的sum1應該最終化。includeusing namespace ...