日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BZOJ1103: [POI2007]大都市meg

發布時間:2025/5/22 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BZOJ1103: [POI2007]大都市meg 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題解:dfs序用樹狀數組維護即可

Problem: 1103User: c20161007Language: C++Result: AcceptedTime:4872 msMemory:23832 kb ****************************************************************/#include <bits/stdc++.h> const int MAXN=4e5+10; #define ll long long using namespace std; vector<int>vec[MAXN]; ll read(){ll x=0,f=1;char ch=getchar();while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}while(isdigit(ch))x=x*10+ch-'0',ch=getchar();return f*x; } int fa[MAXN],dep[MAXN],num[MAXN],ans[MAXN]; int p[MAXN];int cnt; void dfs(int v,int pre,int deep){num[v]=1;ans[v]=dep[v]=deep;fa[v]=pre;p[v]=++cnt;for(int i=0;i<vec[v].size();i++){if(vec[v][i]!=pre){dfs(vec[v][i],v,deep+1);num[v]+=num[vec[v][i]];}} } int n,q; char str[11];int d[MAXN]; int get_id(int x){return x&(-x);} void add(int x,int vul){for(int i=x;i<=n+1;i+=get_id(i))d[i]+=vul; } int Sum(int x){int sum=0;for(int i=x;i>0;i-=get_id(i))sum+=d[i];return sum; } int main(){n=read();int u,v;for(int i=1;i<n;i++)u=read(),v=read(),vec[u].push_back(v),vec[v].push_back(u);dfs(1,0,0);q=read();for(int i=1;i<=q+n-1;i++){scanf(" %s",str);if(str[0]=='A'){u=read();v=read();if(dep[u]>dep[v])swap(u,v);add(p[v],1);add(p[v]+num[v],-1);}else u=read(),printf("%d\n",dep[u]-Sum(p[u]));} }

?

1103: [POI2007]大都市meg

Time Limit: 10 Sec??Memory Limit: 162 MB
Submit: 3376??Solved: 1777
[Submit][Status][Discuss]

Description

  在經濟全球化浪潮的影響下,習慣于漫步在清晨的鄉間小路的郵遞員Blue Mary也開始騎著摩托車傳遞郵件了。
不過,她經常回憶起以前在鄉間漫步的情景。昔日,鄉下有依次編號為1..n的n個小村莊,某些村莊之間有一些雙
向的土路。從每個村莊都恰好有一條路徑到達村莊1(即比特堡)。并且,對于每個村莊,它到比特堡的路徑恰好
只經過編號比它的編號小的村莊。另外,對于所有道路而言,它們都不在除村莊以外的其他地點相遇。在這個未開
化的地方,從來沒有過高架橋和地下鐵道。隨著時間的推移,越來越多的土路被改造成了公路。至今,Blue Mary
還清晰地記得最后一條土路被改造為公路的情景。現在,這里已經沒有土路了——所有的路都成為了公路,而昔日
的村莊已經變成了一個大都市。 Blue Mary想起了在改造期間她送信的經歷。她從比特堡出發,需要去某個村莊,
并且在兩次送信經歷的間隔期間,有某些土路被改造成了公路.現在Blue Mary需要你的幫助:計算出每次送信她需
要走過的土路數目。(對于公路,她可以騎摩托車;而對于土路,她就只好推車了。)

Input

  第一行是一個數n(1 < = n < = 2 50000).以下n-1行,每行兩個整數a,b(1 < =? a以下一行包含一個整數m
(1 < = m < = 2 50000),表示Blue Mary曾經在改造期間送過m次信。以下n+m-1行,每行有兩種格式的若干信息
,表示按時間先后發生過的n+m-1次事件:若這行為 A a b(a若這行為 W a, 則表示Blue Mary曾經從比特堡送信到
村莊a。

Output

  有m行,每行包含一個整數,表示對應的某次送信時經過的土路數目。

Sample Input

5
1 2
1 3
1 4
4 5
4
W 5
A 1 4
W 5
A 4 5
W 5
W 2
A 1 2
A 1 3

Sample Output

2
1
0
1

HINT

轉載于:https://www.cnblogs.com/wang9897/p/9432050.html

總結

以上是生活随笔為你收集整理的BZOJ1103: [POI2007]大都市meg的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。