AcWing 120 防線 二分

2022-06-08 05:36:08 字數 376 閱讀 8443

題目鏈結

這題可以很巧妙的用二分來解決,因為最多隻含乙個奇數,所以我們可以二分奇數字置。如果總的防具數是偶數,那麼就沒有破綻,否則,如果左區間的防具數是奇數,那麼答案肯定在左區間,如果右區間的防具數是奇數,那麼答案就在右區間。

const int maxn = 2e5+10;

struct info info[maxn];

int n;

bool check(ll x)

int main()

if (r==12345678910ll) printf("there's no weakness.\n");

else

}return 0;

}

acwing 二分模板

二分模板一共有兩個,分別適用於不同情況。演算法思路 假設目標值在閉區間 l,r 中,每次將區間長度縮小一半,當l r時,我們就找到了目標值。當我們將區間 l,r 劃分成 l,mid 和 mid 1,r 時,其更新操作是 r mid 或者 l mid 1,計算 mid 時不需要加 1 int bsea...

Acwing244 樹狀陣列 二分

思路一 這道題目經過簡化後,我發現這道題目其實是想要我們去模擬乙個過程,即不斷維護乙個嚴格遞增的序列,如果遍歷到了第i個數,則將這個數字放到第a i 1 下標從1開始 的位置,然後讓原來的a i 1 i位置的數往後移動乙個單位,然後我就想到者相當與就是乙個區間增加的過程,最後用樹狀陣列去維護差分陣列...

整數二分模板(AcWing 789)

這裡帶來一手整數的二分模板。bool check int x 檢查x是否滿足某種性質 區間 l,r 被劃分成 l,mid 和 mid 1,r 時使用 int bsearch 1 int l,int r returnl 區間 l,r 被劃分成 l,mid 1 和 mid,r 時使用 int bsear...