iceprincess_1968
和iceprince_1968
長大了,他們開始協助國王
iceking_1968
管理國內事物。
iceprincess_1968
和iceprince_1968
住在乙個寧靜悠遠的王國:
icekingdom ——
飄雪聖域。飄雪聖域有
n 個城鎮,編號
1,2,3...n
。有些城鎮之間有道路,且滿足任意兩點之間有且僅有一條路徑。飄雪聖域風景優美,但氣候並不是太好。根據
iceprince_1968
的氣候探測儀,將來會發生
q 場暴風雪。每場暴風雪可以用兩個整數
li,ri
刻畫,表示這場暴風雪之後,只有編號屬於
[li,ri]
的城市沒有受到暴風雪的影響。
在暴風雪的影響下迅速確定王國的農業生產方案是非常重要的事情。
iceking_1968
認為,乙個農業生產地域應該是乙個極大連通塊,滿足每個節點都沒有被暴風雪影響。這裡極大連通塊的定義是:不存在乙個不屬於該點集的未被暴風雪影響的點與該連通塊連通。
iceprincess_1968
要負責算出每次暴風雪後,王國能擁有多少個農業生產地域。注意這裡每次暴風雪是獨立的,即每次暴風雪過後,直到每個城鎮重新煥發生機,下一次暴風雪才會到來。
正如上文所述,
iceprincess_1968
擅長文學但不擅長計算機,於是請你幫忙。
第一行包含兩個正整數
n,q,表示
icekingdom
的城鎮個數和暴風雪次數。第2
至第n
行,每行兩個正整數
x,y,
表示城鎮
x 和城鎮
y 之間有一條道路。
第n+1
至第n+q
行,每行兩個正整數
li,ri
,描述一場暴風雪,含義如題面所述。
輸出檔案共有
q 行,第
i 行表示在第
i 場暴風雪之後農業生產地域的個數。
4 3
1 22 3
2 41 2
1 33 4
1
12
【輸入輸出樣例
1 解釋】
第一次詢問,只有(
1,2)乙個連通塊。
第二次詢問,只有(
1,2,3
)乙個連通塊。
第三次詢問,有3 和
4 兩個連通塊。
【輸入輸出樣例2】
見選手目錄下的
icekingdom/icekingdom2.in
和icekingdom/icekingdom2.ans
。【資料規模和約定】
對於30%
的資料:
n<=100,q<=100;對於
50%的資料:
n<=2,000,q<=2,000;對於
100%
的資料:
n<=200,000
,q<=200,000,
對於所有的暴風雪,
li<=ri
。solution
考場時一直從圖的聯通塊來考慮,一直沒想出來
這道題應該從加邊來考慮
比如說詢問區間(l,r)那麼只有起點和終點在l,r裡的邊可以貢獻
我們把邊按較大的點排序,樹狀陣列統計即可
#include#include#include#include#include#include#define maxn 200005
using namespace std;
int n,q,tree[maxn],ans[maxn];
struct nodee[maxn],s[maxn];
bool cmp(node a,node b)
sort(e+1,e+n,cmp);
for(int i=1;i<=q;i++)
sort(s+1,s+q+1,cmp);
int now=1;
for(int i=1;i<=q;i++)
int num=ask(s[i].r)-ask(s[i].l-1);
ans[s[i].id]=s[i].r-s[i].l+1-num;
}for(int i=1;i<=q;i++)printf("%d\n",ans[i]);
return 0;
}
樹狀陣列 飄雪聖域
沒找到傳送門 這是校內的 題意 給一棵樹,多次詢問編號在l到r中的點組成的連通塊個數 考試的時候一直在想奇怪的做法,用的都是樹上維護的知識 比如已經被某c姓神仙卡掉的虛樹 樹剖 二分 其實這道題根本不需要樹上的知識 首先要知道乙個區間的連通塊個數等於點數 邊數 無重邊自環的情況 然後問題就變成了要求...
WOJ4379 飄雪聖域 主席樹
傳送門 每次詢問點的個數是r l 1,那麼聯通塊個數就是總點數減去邊的個數 考慮哪些邊有貢獻,令邊為l,r l有時靜態區間,然後就是主席樹 include define n 200050 using namespace std struct nodet n 40 int tot,rt n vecto...
飄雪聖域 樹狀陣列 二維偏序
首 先要 知道 首先要知道 首先要知道 若給定乙個區間 l,r l,r l,r 設一條邊的小端點為 u uu,大端點為 vvv,滿足條件 l u andv rl le u and v le r l uand v r 的邊數為 num numnu m,則聯通塊數量為 r l 1 n umr l 1 n...