【BZOJ】【3083】遥远的国度

树链剖分/dfs序


  其实过了【BZOJ】【4034】【HAOI2015】T2以后就好搞了……

  链修改+子树查询+换根

  其实静态树的换根直接树链剖分就可以搞了……

  因为其实只有一样变了:子树

  如果root在x的子树中(以1为根dfs的时候),那么现在x的子树就变成了整个dfs序中,除去含有root的那个子树的剩下的部分,画个图大概就是这样:(红色部分为现在的子树)

aaarticlea/png;base64,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" alt="" width="496" height="337" />

  我们发现,这种子树由于换根而产生变化的情况,仅当在以1为根时的树中,x是new_root的祖先时发生,那么我们判断这种情况是否发生只需这样:if (start[x]<=start[root] && end[x]>=end[root]) ......

  而其他情况?则和原来一样啦~子树并没有变化,对吧~

  那么我们就可以搞了……

WA了几发:这题中点权的范围是0~2147483647(P.S.我一开始还以为得开unsigned int,因为写的是$\leq2^{31}$……)所以不能认为tag=0就是没有标记,而应该用-1作为空标记……

 /**************************************************************
Problem: 3083
User: Tunix
Language: C++
Result: Accepted
Time:4444 ms
Memory:23172 kb
****************************************************************/ //BZOJ 3083
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
#define pb push_back
using namespace std;
typedef long long LL;
inline int getint(){
int r=,v=; char ch=getchar();
for(;!isdigit(ch);ch=getchar()) if (ch=='-') r=-;
for(; isdigit(ch);ch=getchar()) v=v*-''+ch;
return r*v;
}
const int N=;
const int INF=;
/*******************template********************/
int to[N<<],next[N<<],head[N],cnt;
void add(int x,int y){
to[++cnt]=y; next[cnt]=head[x]; head[x]=cnt;
to[++cnt]=x; next[cnt]=head[y]; head[y]=cnt;
}
int t[N<<],mn[N<<];
//t[o]表示set标记
#define mid (l+r>>1)
#define L (o<<1)
#define R (o<<1|1)
void Push_down(int o,int l,int r){
if (t[o]!=-){
mn[L]=mn[R]=t[L]=t[R]=t[o];
t[o]=-;
}
}
void maintain(int o,int l,int r){
mn[o]=min(mn[L],mn[R]);
}
void update(int o,int l,int r,int ql,int qr,int v){
if (ql<=l && qr>=r) t[o]=mn[o]=v;
else{
Push_down(o,l,r);
if (ql<=mid) update(L,l,mid,ql,qr,v);
if (qr>mid) update(R,mid+,r,ql,qr,v);
maintain(o,l,r);
}
}
int query(int o,int l,int r,int ql,int qr){
if (ql>qr) return INF;
if (ql<=l && qr>=r) return mn[o];
else{
int ans=INF;
Push_down(o,l,r);
if (ql<=mid) ans=min(ans,query(L,l,mid,ql,qr));
if (qr>mid) ans=min(ans,query(R,mid+,r,ql,qr));
return ans;
}
}
int n,m,rt;
int a[N];
int fa[N][],st[N],ed[N],son[N],dep[N],size[N],top[N],tot;
void dfs(int x){
size[x]=; son[x]=;
F(i,,)
if (dep[x]>=(<<i)) fa[x][i]=fa[fa[x][i-]][i-];
else break;
int mx=;
for(int i=head[x];i;i=next[i])
if (to[i]!=fa[x][]){
fa[to[i]][]=x;
dep[to[i]]=dep[x]+;
dfs(to[i]);
size[x]+=size[to[i]];
if (size[to[i]]>mx) son[x]=to[i],mx=size[to[i]];
}
}
bool vis[N];
void connect(int x,int f){
vis[x]=; top[x]=f;
st[x]=++tot;
if (son[x]) connect(son[x],f); for(int i=head[x];i;i=next[i])
if (!vis[to[i]])
connect(to[i],to[i]);
ed[x]=tot;
}
void modify(int x,int y,int v){
while(top[x]!=top[y]){
if (dep[top[x]]<dep[top[y]]) swap(x,y);
update(,,n,st[top[x]],st[x],v);
x=fa[top[x]][];
}
if (dep[x]>dep[y]) swap(x,y);
update(,,n,st[x],st[y],v);
} int main(){
#ifndef ONLINE_JUDGE
freopen("3083.in","r",stdin);
// freopen("3083.out","w",stdout);
#endif
n=getint(); m=getint();
F(i,,n){
int x=getint(),y=getint();
add(x,y);
}
dfs();
connect(,);
memset(t,-,sizeof t);
F(i,,n){
a[i]=getint();
update(,,n,st[i],st[i],a[i]);
}
rt=getint();
F(i,,m){
int cmd=getint();
if (cmd==){
rt=getint();
}else if (cmd==){
int x=getint(),y=getint();
int v=getint();
modify(x,y,v);
}else if (cmd==){
int x=getint();
if (st[rt]>=st[x] && ed[rt]<=ed[x]){
int y=rt,t=dep[rt]-dep[x]-,ans=INF;
D(i,,) if (t&(<<i)) y=fa[y][i];
if (<=st[y]-) ans=min(ans,query(,,n,,st[y]-));
if (n>=ed[y]+) ans=min(ans,query(,,n,ed[y]+,n));
printf("%d\n",ans);
}else{
printf("%d\n",query(,,n,st[x],ed[x]));
}
}
}
return ;
}

3083: 遥远的国度

Time Limit: 10 Sec  Memory Limit: 1280 MB
Submit: 1370  Solved: 335
[Submit][Status][Discuss]

Description

描述
zcwwzdjn在追杀十分sb的zhx,而zhx逃入了一个遥远的国度。当zcwwzdjn准备进入遥远的国度继续追杀时,守护神RapiD阻拦了zcwwzdjn的去路,他需要zcwwzdjn完成任务后才能进入遥远的国度继续追杀。

问题是这样的:遥远的国度有n个城市,这些城市之间由一些路连接且这些城市构成
了一颗树。这个国度有一个首都,我们可以把这个首都看做整棵树的根,但遥远的国度比较奇怪,首都是随时有可能变为另外一个城市的。遥远的国度的每个城市有
一个防御值,有些时候RapiD会使得某两个城市之间的路径上的所有城市的防御值都变为某个值。RapiD想知道在某个时候,如果把首都看做整棵树的根的
话,那么以某个城市为根的子树的所有城市的防御值最小是多少。由于RapiD无法解决这个问题,所以他拦住了zcwwzdjn希望他能帮忙。但
zcwwzdjn还要追杀sb的zhx,所以这个重大的问题就被转交到了你的手上。

Input

第1行两个整数n m,代表城市个数和操作数。
第2行至第n行,每行两个整数 u v,代表城市u和城市v之间有一条路。
第n+1行,有n个整数,代表所有点的初始防御值。
第n+2行一个整数 id,代表初始的首都为id。
第n+3行至第n+m+2行,首先有一个整数opt,如果opt=1,接下来有一个整数id,代表把首都修改为id;如果opt=2,接下来有三个整数
p1 p2 v,代表将p1 p2路径上的所有城市的防御值修改为v;如果opt=3,接下来有一个整数
id,代表询问以城市id为根的子树中的最小防御值。

Output

对于每个opt=3的操作,输出一行代表对应子树的最小点权值。

Sample Input

3 7
1 2
1 3
1 2 3
1
3 1
2 1 1 6
3 1
2 2 2 5
3 1
2 3 3 4
3 1

Sample Output

1
2
3
4
提示
对于20%的数据,n<=1000 m<=1000。
对于另外10%的数据,n<=100000,m<=100000,保证修改为单点修改。
对于另外10%的数据,n<=100000,m<=100000,保证树为一条链。
对于另外10%的数据,n<=100000,m<=100000,没有修改首都的操作。
对于100%的数据,n<=100000,m<=100000,0<所有权值<=2^31。

HINT

Source

[Submit][Status][Discuss]

上一篇:JSPGenSDF基础配置


下一篇:Jquery Mobile实例--利用优酷JSON接口读取视频数据