牛客網多校5 A gpa

2021-08-22 04:54:55 字數 793 閱讀 1136

輸入:

第一行n,k

第二行n個s[i]

第三行n個c[i]

最多剪掉k個數使

答案用二分找,做題時想到過,但沒有仔細去想。假設max已知∑s

[i]∗

c[i]

∑ s[

i]∗c

[i]=max*∑s

[i] ∑s[

i],即∑s

[i]∗

(c[i

]−ma

x)∑ s[

i]∗(

c[i]

−max

)= 0,只需要每次按(c[i]-max)排序,從k+1開始加到n,判斷sum是否符合,因為後面的數比前面的數大,如果後面的數相加小於0,前面的數也沒意義了。總之,要找乙個max使前面公式剛好去掉k個數時不小於0。

#include"bits/stdc++.h"

using

namespace

std;

int n,k;

double t[100005],s[100005],c[100005];

const

double eps=1e-6;

int check(double d)

int main()

printf("%.11f\n",r);

return

0;}

Hash Function 牛客網多校

這題竟然卡memset.一開始t了以為陣列開小了 就往大了搞.首先是判矛盾 如果i位置上的乙個數ary i 本來應該在ary i n j處 那j到i之間肯定不能有負數 字首和判斷一下 如果暫時沒矛盾 那就將從j到i 1的位置都向i連一條邊 因為ary i 這個數會出現在i這個位置就是因為j到i 1都...

inv 牛客網多校

給乙個1 3 n 1的a序列 和乙個2 4 n的排列的b序列 問歸併後最小逆序對數 肯定考慮用a 因為a是有序的 無腦解釋 首先有個結論 a序列插入時 a i 1 插入的最優位置一定在a i 的右邊 1,i b j a i 代表 1,n 內有多少b j 大於a i 對於每個a i 找乙個p使 1,i...

Prefix Sum 牛客網多校

分塊法真的奇妙 更新操作夠2000次就n k的統一更新一次 期間所有更新存起來 有查詢了先把之前已經更新好的陣列裡的內容取出來 然後把存起來還沒更新的操作算一遍即可 正解線段樹或樹狀陣列 線段樹迷之t include using namespace std define ll long long c...