C小H和遊戲 程式設計題

2022-09-22 22:57:27 字數 964 閱讀 5729

c 小h和遊戲

小h正在玩乙個戰略類遊戲,她可以操縱己方的飛機對敵國的n座城市(編號為1~n)進行轟炸

敵國的城市形成了一棵樹,小h會依次進行q次轟炸,每次會選擇乙個城市a進行轟炸,和這座城市距離不超過2的城市都會受損(這裡距離的定義是兩點最短路徑上的邊數),轟炸結束後,小h還想知道當前城市a受損的次數

作為遊戲的開發者之一,你有義務回答小h的問題

第1行,兩個整數n(1≤n≤750000)、q(1≤q≤750000)

第2~n行,每行兩個整數表示樹上的一條邊

第n+1~n+q行,每行乙個整數,表示小h這次轟炸的城市

輸出q行,每行乙個整數表示這一次轟炸的城市在此次轟炸後共計受損幾次

輸入4 4

1 2

2 3

3 4

1 2 3 4

輸出1

2 3

3離線查詢問題就是防止重複計算貢獻

設定乙個陣列計算點x對他的的子節點與孫節點的影響

( 輸入量很大要常數優化下

#include

using namespace std;

#define clr(a,b) memset(a,(b),sizeof(a))

#define ll long long

const int inf = 0x3f3f3f3f;

const int maxn = 1e6+10;

const int mod = 19260817;

int sum[maxn][3];

int fa[maxn];

vector g[maxn];

long long read()

return res;

}void dfs(int u, int f)

}int main()

dfs(1,0);

while(q--)

return 0;

}

D 小H和遊戲

對於被轟炸城市而言,它的孩子,孩子的孩子,父親的父親,父親及父親的孩子均受到了影響,暴力更改顯然不行,不妨用標記更新,詳細見 1 include2 using namespace std 3const int maxn 750005 4 5struct node 6edge maxn 1 9 int...

《ACM程式設計》 H題

問題描述 給你幾組20進製的數,求上下兩行對應兩個數相加的和。解題思路 用字串形式輸入,然後將其轉化成數字,最後在將10以上的數用字元輸出。如果兩個數相加超過19,那麼就要向下一位產生進製。其中數制轉換可以用呼叫函式完成,節省時間。include include include include us...

Wannaly挑戰賽10 C小h和遊戲

c小h和遊戲 小h正在玩乙個戰略類遊戲,她可以操縱己方的飛機對敵國的n座城市 編號為1 n 進行轟炸 敵國的城市形成了一棵樹,小h會依次進行q次轟炸,每次會選擇乙個城市a進行轟炸,和這座城市距離不超過2的城市都會受損 這裡距離的定義是兩點最短路徑上的邊數 轟炸結束後,小h還想知道當前城市a受損的次數...