bzoj4448 Scoi2015 情報傳遞

2022-08-15 04:27:15 字數 1741 閱讀 9114

第一問不解釋,對於第二問的處理,可以使用cdq分治,假設分治的詢問區間是[l,r],那麼我們對於標號在[l,mid]的修改操作賦予乙個權值,因為在當前[l,r]中[l,mid]的修改操作只會對[mid+1,r]的詢問操作,所以第i修改操作至少經過m-i的時間,因此賦予的權值是m-i,而對於[mid+1,r]區間中的詢問操作,也賦予乙個權值w-m,這裡w為詢問的數值,我們可以預處理出樹的dfs序並維護乙個樹狀陣列,這樣我們就可以把這些操作按權值從大到小插入或者詢問,時間複雜度o(nlognlogn)。

**,執行時間差不多墊底。。(看了其他博主的題解貌似我想的複雜了。。。)

1 #include2 #include3

#define n 500010

4#define lb(x) (x&-x)

5using

namespace

std;

6int

dp,p[n],pre[n],tt[n],n,a,i,m,o,c[n],deep[n],fa[n];

7int

l[n],r[n],ans[n];

8int s[n][20];9

struct

gb[n];

12struct

ggw[n];

15void cc(int x,int

w)1622}

23void dfs(int

x)24

34 r[x]=++o;35}

36int lca(int x,int

y)3746}

47if(x==y)return

x;48

for(i=19;i>=0;i--)

4955}56

return

fa[x];57}

58int sum(int

x)59

66return

ans;67}

68void link(int x,int

y)69

72bool

cmp(gg a,gg b)

7378

void solve(int l,int

r)79

89for (i=m+1;i<=r;i++)

90if (b[i].typ==1)91

95 sort(w+1,w+1+tot,cmp);

9697

for (i=1;i<=tot;i++)

98if (w[i].id<=m)

99103

else

104110

for (i=1;i<=tot;i++)

111if (w[i].id<=m)

112116

117 solve(l,m);solve(m+1

,r);

118}

119120

intmain()

121128 scanf("

%d",&m);

129for (i=1;i<=m;i++)

130136 dfs(1

);137

for(i=1;i<=n;i++)s[i][0]=fa[i];

138for(int h=1;h<20;h++)

139144

}145 solve(1

,m);

146for (i=1;i<=m;i++)

147if (b[i].typ==1

)148

153 }

bzoj 4448 Scoi2015 情報傳遞

description 奈特公司是乙個巨大的情報公司,它有著龐大的情報網路。情報網路中共有n名情報員。每名情報員口j 能有 若t名 可能沒有 下線,除1名大頭日外其餘n 1名情報員有且僅有1名上線。奈特公司紀律森嚴,每 名情報員只能與自己的上 下線聯絡,同時,情報網路中仟意兩名情報員一定能夠通過情報...

BZOJ4448 Scoi2015 情報傳遞

bzoj4448 scoi2015 情報傳遞 奈特公司是乙個巨大的情報公司,它有著龐大的情報網路。情報網路中共有n名情報員。每名情報員口j 能有若t名 可能沒有 下線,除1名大頭日外其餘n 1名情報員有且僅有1名上線。奈特公司紀律森嚴,每名情報員只能與自己的上 下線聯絡,同時,情報網路中仟意兩名情報...

BZOJ 4448 Scoi2015 情報傳遞

bzoj 4448 scoi2015 情報傳遞 主席樹 奈特公司是乙個巨大的情報公司,它有著龐大的情報網路。情報網路中共有n名情報員。每名情報員口j 能有 若t名 可能沒有 下線,除1名大頭日外其餘n 1名情報員有且僅有1名上線。奈特公司紀律森嚴,每 名情報員只能與自己的上 下線聯絡,同時,情報網路...