[dfs序 树状数组] BZOJ 1103 [POI2007]大都市meg
来源:互联网 发布:社交网络 推荐 综述 编辑:程序博客网 时间:2024/05/16 13:04
大水题
据说树链剖分可暴力过?
#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;inline char nc(){static char buf[100000],*p1=buf,*p2=buf;if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin); if (p1==p2) return EOF; }return *p1++;}inline void read(int &x){char c=nc(),b=1;for (;!(c>='0' && c<='9');c=nc()) if (c=='-') b=-1;for (x=0;c>='0' && c<='9';x=x*10+c-'0',c=nc()); x*=b;}inline void read(char &x){for (x=nc();x!='A' && x!='W';x=nc());}const int N=250005;namespace BIT{ #define lowbit(x) ((x)&-(x)) int maxn,c[N]; inline void init(int n){ maxn=n; } inline void add(int x,int r){ for (int i=x;i<=maxn;i+=lowbit(i)) c[i]+=r; } inline void add(int l,int r,int x){ add(l,x); add(r+1,-x); } inline int query(int x){ int ret=0; for (int i=x;i;i-=lowbit(i)) ret+=c[i]; return ret; }}struct edge{int u,v,next;};edge G[N<<1];int head[N],inum;inline void add(int u,int v,int p){G[p].u=u; G[p].v=v; G[p].next=head[u]; head[u]=p;}int n;int fat[N],size[N],depth[N];int clk,tid[N],last[N];#define V G[p].vinline void dfs(int u,int fa){fat[u]=fa; depth[u]=depth[fa]+1; size[u]=1; tid[u]=++clk;for (int p=head[u];p;p=G[p].next)if (V!=fa)dfs(V,u),size[u]+=size[V];last[u]=tid[u]+size[u]-1;}int main(){int Q,iu,iv,ans; char order;freopen("t.in","r",stdin);freopen("t.out","w",stdout);read(n); BIT::init(n);for (int i=1;i<n;i++)read(iu),read(iv),add(iu,iv,++inum),add(iv,iu,++inum);dfs(1,0);read(Q); Q+=n-1;while (Q--){read(order);if (order=='A'){read(iu); read(iv);if (depth[iu]<depth[iv]) swap(iu,iv);BIT::add(tid[iu],last[iu],1);}else if (order=='W'){read(iu);ans=BIT::query(tid[iu]);ans=depth[iu]-1-ans;printf("%d\n",ans);}}return 0;}
0 0
- [dfs序 树状数组] BZOJ 1103 [POI2007]大都市meg
- 【bzoj 1103】[POI2007]大都市meg 树状数组维护dfs序
- BZOJ 1103: [POI2007]大都市meg 树链剖分, 树状数组+DFS序
- [BZOJ]1103: [POI2007]大都市meg dfs序+树状数组
- bzoj 1103: [POI2007]大都市meg 树状数组
- [bzoj 1103] 大都市meg(树状数组和dfs序)
- BZOJ1103(POI2007)[大都市meg]--DFS序+树状数组
- BZOJ 1103: [POI2007]大都市meg 差分+树状数组
- BZOJ 1103: [POI2007]大都市meg 树上差分 树状数组
- [BZOJ]1103: [POI2007]大都市meg
- 【BZOJ 1103】 [POI2007]大都市meg
- BZOJ 1103: [POI2007]大都市meg
- bzoj-1103 [POI2007]大都市meg
- BZOJ 1103: [POI2007]大都市meg
- BZOJ 1103 [POI2007]大都市meg
- bzoj 1103 POI2007 大都市meg
- 【bzoj 1103】[POI2007]大都市meg
- 【BZOJ1103】[POI2007]大都市meg【树链剖分】【线段树】【或 树状数组 + dfs序】
- C#中的委托之操作符(基础二)
- 从一段文本提取IP地址
- 51nod 1101 换零钱
- 魅族 MX4,MX4 Pro,MX5 android studio无法识别问题
- 精通iOS开发--第15章 Grand Central Dispatch和后台处理之Block与Self的循环引用
- [dfs序 树状数组] BZOJ 1103 [POI2007]大都市meg
- Javascript创建对象的七种模式(你必须掌握!)
- list packages
- 寻找一个字符串中连续出现次数最多的子串(面试宝典14.5节面试题1)
- PagerSlidingTabStrip实现横划
- 误删的恢复: DBA的噩梦
- 超过1个G免费资源,16套质量超高风格多样的移动UIKIT
- JS正则表达式验证数字代码
- 由MTK平台 mtkfb 设备注册疑问引发的知识延伸--ARM Device Tree