D Salary Changing(區間二分)

2021-10-08 04:27:46 字數 1179 閱讀 2665

感覺這個題克我……

給出 n 個區間 [l,r] 表示每個員工的工資範圍,給出公司總預算 s ,現給每個人發工資,要求和不超過s,並且發到的中位數最大。保證 n 是奇數。

因為要找的是中位數,而且有預算 s 的限制,所以要讓中位數最大,讓中位數前面的和後面的數都盡可能地小作為貪心策略二分列舉中位數 mid,如果 mid∈[l,r],選擇左端點 l,或者是答案 mid如果 mid >r 或 mid那麼第一種情況什麼時候選左端點呢?

因為貪心盡可能使 sum<=s, 我們要將 左端點 l 大於 mid 先選,且 l 越大越先選,所以給出的每乙個區間,以左區間端點 l 降序排列。

因為中位數前面有 n/2 個比它小的數,後面有 n/2 個比它大的數,中位數要滿足是第 n/2+1 個數,在計數過程中我們需要數    l =這樣二分 bool 函式就完成了

const int n=2e5+5;

int n,m,t;

int i,j,k;

struct node

}a[n];

int midd;

ll s;

bool c(ll x)

else sum+=a[i].l;

}else if( a[i].l >x )

else sum+=a[i].l;

}if(num) return false;

return sum<=s;//預算充足,中位數 plus

}int main()

pd(ans);

}// pause;

return 0;

}

區間DP總結(二)

poj 1141 brackets sequence 括號匹配並輸出方案 洛谷2858 奶牛零食 區間長度逐漸縮小 洛谷1622 釋放囚犯 將問題向區間dp轉化的思想 參考部落格 劍鋒oi部落格動態規劃之區間dp專題 區間dp常用模板 初始化dp陣列及len為1的情況 for int len 2 l...

線段樹 二 區間乘 區間加

放 注意點 注意運算子優先順序 比如 a b p 是b先mod p再與a相乘 a 1 1是1 1再a位移 a 1 a 2 a 1 1 a 2 1 參見 線段樹v2.0 支援區間加 區間乘 區間和查詢 include include include define n 1000010 using nam...

括號匹配(二)NYOJ 區間dp)

括號匹配 二 時間限制 1000 ms 記憶體限制 65535 kb 難度 6 描述 給你乙個字串,裡面只包含 四種符號,請問你需要至少新增多少個括號才能使這些括號匹配起來。如 是匹配的 是匹配的 是不匹配的 是不匹配的 輸入 第一行輸入乙個正整數n,表示測試資料組數 n 10 每組測試資料都只有一...