藍橋杯 2023年第五屆真題 套娃

2022-05-06 02:33:06 字數 1883 閱讀 9889

時間限制: 1sec 記憶體限制: 128mb 提交: 5 解決: 0

題目描述

作為 drd 送的生日禮物,atm 最近得到了乙個俄羅斯娃娃。他對這個俄羅斯娃娃的構造很感興趣。

俄羅斯娃娃是一層一層套起來的。假設:乙個大小為 x 的俄羅斯娃娃裡面可能會放任意多個大小小於 x 的俄羅斯娃娃(而市場上的套娃一般大娃裡只能放乙個小娃)。

drd 告訴 atm ,這個俄羅斯娃娃是由 n 個小娃娃組成的,它們的大小各不相同。    我們把這些小娃娃的大小從小到大依次記為 1 到 n 。

如果 atm 想觀賞大小為 k 的小娃娃,他會先看這個小娃娃是否已經在桌子上了。    如果已經在桌子上,那麼他就可以觀賞了。否則他就開啟桌子上某乙個俄羅斯娃娃,將它套住的所有的小娃娃拿出來,擺在桌子上。

一開始桌子上只有 drd 送的大小為 n 的娃娃。注意,他只會將其中所有小娃娃拿出來,如果小娃娃裡面還套著另外的小娃娃,他是不會將這些更裡層的這些小娃娃拿出來的。

而且 atm 天生具有最優化的強迫症。他會最小化他所需要開啟的娃娃的數目。

atm 是乙個怪人。有時候他只想知道**大小為 x 的娃娃時需要開啟多少個娃娃(但並不去開啟);有時候聽 drd 說某個娃娃特別漂亮,於是他會開啟看。現在請你輸出他每次需要開啟多少個娃娃。

輸入第一行兩個數 n m ,表示娃娃的數目以及 atm 想看的娃娃的數目。

接下來 n - 1 行,每行兩個數 u v,表示大小為 u 的娃娃裡面套著乙個大小為 v 的娃娃。保證 u > v 。

接下來 m 行,每行形如:

p x :表示 atm 一定要看到大小為 x 的娃娃;

q x :表示 atm 只想知道為了看大小為 x 的娃娃,他需要開啟多少個娃娃,但實際上並不開啟他們。

輸出輸出 m 行。對應輸入中p操作或q操作需要開啟(或假想開啟)多少個俄羅斯娃娃。

樣例輸入

5 5

5 35 4

3 23 1

q 1q 4

p 2q 1

q 4

樣例輸出

212

00

#include#include

#include

#include

using

namespace

std;

const

int maxn = 1000010

;struct

nodenodes[maxn];

intn,m;

void update(int

index);

int main(void

)

for(int i=0;i1;i++)

for(int i=1;i<=n;i++)

nodes[i].depth =depth;

}/*cout << endl;

for(int i=1;i<=n;i++)

cout << endl;

*/for(int i=1;i<=m;i++)

else

father.push_back(k);

//從最上次的節點開始,進行更新,每次更新需要把自己的後繼節點全部釋放

int size =father.size();

for(k=0;k)}}

/*cout << endl;

for(int k=1;k<=n;k++)

cout << endl;

*/}return0;

} void update(int

index)

nodes[index].next.clear();

while(!que.empty())

}

}

這是錯誤的,當然可能是正確的,但是時間複雜度太高了。

藍橋杯2023年第五屆 套娃 線段樹 dfs序

題目描述 作為 drd 送的生日禮物,atm 最近得到了乙個俄羅斯娃娃。他對這個俄羅斯娃娃的構造很感興趣。俄羅斯娃娃是一層一層套起來的。假設 乙個大小為 x 的俄羅斯娃娃裡面可能會放任意多個大小小於 x 的俄羅斯娃娃 而市場上的套娃一般大娃裡只能放乙個小娃 drd 告訴 atm 這個俄羅斯娃娃是由 ...

藍橋杯 2023年第五屆真題 分糖果

問題描述 有n個小朋友圍坐成一圈。老師給每個小朋友隨機發偶數個糖果,然後進行下面的遊戲 每個小朋友都把自己的糖果分一半給左手邊的孩子。一輪分糖後,擁有奇數顆糖的孩子由老師補給1個糖果,從而變成偶數。反覆進行這個遊戲,直到所有小朋友的糖果數都相同為止。你的任務是 在已知的初始糖果情形下,老師一共需要補...

藍橋杯 2023年第五屆真題 分糖果

時間限制 1sec 記憶體限制 128mb 提交 5184 解決 2783 題目描述 問題描述 有n個小朋友圍坐成一圈。老師給每個小朋友隨機發偶數個糖果,然後進行下面的遊戲 每個小朋友都把自己的糖果分一半給左手邊的孩子。一輪分糖後,擁有奇數顆糖的孩子由老師補給1個糖果,從而變成偶數。反覆進行這個遊戲...