題意:給定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
yva
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 ...