3083 遙遠的國度

2022-09-19 08:06:11 字數 2769 閱讀 3341

傳送門

感覺今天浪費了好多時間寫水題...

主要傳達的思想是換跟操作不一定要真的換,查詢的時候討論一下查詢點與目前根的關係即可.

1

//achen

2 #include3 #include4 #include5 #include6 #include7 #include8 #include9 #include

10 #include11

#define inf 0x7fffffff

12#define for(i,a,b) for(int i=(a);i<=(b);i++)

13#define rep(i,a,b) for(int i=(a);i>=(b);i--)

14const

int n=2e5+7

;15 typedef long

long

ll;16 typedef double

db;17

using

namespace

std;

18int

n,m,rt,rt;

19ll v[n];

2021 templatevoid read(t &x)

2728 ll sg[n<<2],lz[n<<2

];29

#define lc x<<1

30#define rc ((x<<1)|1)

31#define mid ((l+r)>>1)

32void down(int x,int l_len,int

r_len)

3839

void update(int x,int l,int r,int ql,int qr,int

v) 43 down(x,mid-l+1,r-mid);

44if(ql<=mid) update(lc,l,mid,ql,qr,v);

45if(qr>mid) update(rc,mid+1

,r,ql,qr,v);

46 sg[x]=min(sg[lc],sg[rc]);47}

4849 ll qry(int x,int l,int r,int ql,int

qr)

5758

int ecnt,fir[n],nxt[n<<1],to[n<<1

];59

void add(int u,int

v) 63

64int

fa[n],r[n],sz[n],dfn[n],tid[n],top[n],dfs_clock;

65void dfs(int x,int

fa) 73}

7475

void dfs2(int x,int

top)

84if

(mson) dfs2(mson,top);

85for(int i=fir[x];i;i=nxt[i]) if(to[i]!=fa[x]&&to[i]!=mson) 88}

8990

void schange(int x,int y,int

v) 96

if(dfn[x]>dfn[y]) swap(x,y);

97 update(1,1

,n,dfn[x],dfn[y],v);98}

99100

//#define debug

101int

main()

111 for(i,1

,n) read(v[i]);

112 read(rt); rt=rt;

113 dfs(rt,0

);114

dfs2(rt,rt);

115 for(ti,1

,m)

123else

132 ans=min(qry(1,1,n,1,dfn[y]-1),qry(1,1,n,dfn[y]+sz[y],n));

133}

134else ans=qry(1,1,n,dfn[x],dfn[x]+sz[x]-1

);135 printf("

%lld\n

",ans);

136}

137}

138return0;

139 }

view code

//achen

#include#include#include#include#include#include#include#include#include#include#define for(i,a,b) for(int i=(a);i<=(b);i++)

#define rep(i,a,b) for(int i=(a);i>=(b);i--)

typedef long long ll;

typedef double db;

int vis[1000007],fa[100007],cnt[100008][11],ok[5007][5007];

using namespace std;

int find(int x)

//#define debug

int main()

for(i,1,n) puts("");

int rt=rand()%n+1;

printf("%d\n",rt);

for(i,1,m)

else if(o==1)

else

}return 0;

}

bzoj3083 遙遠的國度

題意 給定一棵樹,支援換根,路徑權值覆蓋,求子樹最小。思路 求子樹?上樹鏈剖分,但是換根怎麼辦?我們只能通過原有資訊推出換根後的答案。換根不影響路徑修改,所以只要考慮子樹最小值的維護。這裡要分3種情況討論 1 如果詢問點是當前根,直接返回整棵樹的最小值。2 如果在原樹中,當前根不在 x的子樹中,直接...

bzoj3083 遙遠的國度

time limit 10 sec memory limit 1280 mb submit 1733 solved 429 submit status discuss description 描述 zcwwzdjn在追殺十分sb的zhx,而zhx逃入了乙個遙遠的國度。當zcwwzdjn準備進入遙遠的...

bzoj3083 遙遠的國度

time limit 10 sec memory limit 1280 mb submit 1960 solved 484 submit status discuss 描述zcwwzdjn在追殺十分sb的zhx,而zhx逃入了乙個遙遠的國度。當zcwwzdjn準備進入遙遠的國度繼續追殺時,守護神ra...