Jzoj4747 被粉碎的線段樹

2021-08-09 17:18:34 字數 761 閱讀 8450

額這個題麼

有乙個很關鍵的點:結點個數依然為2n-1(證明可以看sam的講稿)

不難發現以下性質:區間定位個數+區間所覆蓋的節點個數=2*區間長度

所以問題變為,乙個區間覆蓋了多少個節點?

我們可以求出所有的節點,然後這個問題就是乙個二維偏序計數問題了

具體用離線+按照r排序套上樹狀陣列即可

#include

#include

using

namespace

std;

inline

int c(int x)

struct e s[100010];

struct p w[200010];

inline

bool c1(p a,p b)

inline

int sum(int x,int k=0)

void build(int l,int r);

if(l==r) return;

int m; scanf("%d",&m);

build(l,m); build(m+1,r);

}int main()

sort(s,s+m,c3);

for(int i=0;iprintf("%d\n",(s[i].r-s[i].l+1)*2-s[i].a);

}

Jzoj4747 被粉碎的線段樹

額這個題麼 有乙個很關鍵的點 結點個數依然為2n 1 證明可以看sam的講稿 不難發現以下性質 區間定位個數 區間所覆蓋的節點個數 2 區間長度 所以問題變為,乙個區間覆蓋了多少個節點?我們可以求出所有的節點,然後這個問題就是乙個二維偏序計數問題了 具體用離線 按照r排序套上樹狀陣列即可 inclu...

NOIP模擬 被粉碎的線段樹

不會做啊!打了個貪心,沒有加倍增,然後在打了幾個特殊情況拿了85分。其實答案有乙個性質 區間的定位個數 2 區間的長度 完全被包含的區間個數,比如說 2,7 的答案 7 2 1 2 9 3,包含的區間 2,2 3,3 4,4 5,5 2,3 5,7 6,7 6,6 7,7 好神奇啊!為什麼nie?感...

JZOJ5456 奇怪的佇列 線段樹

題目 給出nn n個人的身高,第i ii個人記得他的前面或者後面有a i a i a i 個人比他高。這些人字典序最小的排列。40分做法 先將所有人的身高排序,然後dfs dfsdf s全排列,再判斷是否成立。時間複雜度 o n n2 o n n 2 o n n2 100分做法 按照樣例一來模擬 4...