nowcode練習賽6(B) 點權和

2021-08-11 00:07:36 字數 1068 閱讀 1474

思路:

因為m的大小為1e7,那麼怎麼做到o(1)的維護節點的兒子和父親的資訊;

fa[x]表示x的父親的編號;

用乙個sum[x]陣列記錄節點x的所有兒子節點的權值;

用乙個cnt[x]陣列表示當前 x節點出現的次數;

dep[x]表示x節點的兒子的個數,即出度;

arr[x]為x節點的權值;

那麼,對於每次的的詢問,維護

arr[x

]++;

cnt[x]

++;sum[x

]+=dep[x

];sum[x]

%=mod;

arr[fa[

x]]+

+;sum[fa[

x]]+

+;sum[fa[

fa[x]

]]++

;

那麼每次的ans:

ans兒子:sum[x];

ans自己:arr[x]+cnt[fa[x]]];

ans父親:arr[fa[x]]+cnt[fa[fa[x]]];

ans = ans兒子+ans自己+ans父親;

code:

#include

using namespace std;

typedef int int;

const int maxn = 1e5 + 99;

const int

mod = 19260817;

int fa[maxn];

int arr[maxn];

intsum[maxn];

int dep[maxn];

int cnt[maxn];

inline bool in(int &ret)

int main()

int hash = 0;

int i = 1;

fa[1] = 0;

while (m--)

printf("%d\n", hash);

return

0;}

end

牛客練習賽20 A和B

在一次課間休息的時候,音無結弦看到立華奏乙個人坐在座位上寫作業,於是動了請她吃麻婆豆腐的念頭。他迅速移動到她後面的座位,尋思著該怎麼開口邀請,他摸了摸口袋,拍了拍腦袋,有了 奏 聽說食堂裡有種傳聞中因為辣過頭所以誰都不會點的麻婆豆腐,但是卻驚人地好吃啊,這樣,我們來做個題吧 如果你做出來了我就天天請...

牛客練習賽59 B 牛能和小鎮

題目描述 在牛國有2個小鎮編號1,2,3.n 1,n。用二維平面來表示每個小鎮的位置,第個小鎮的位置為 xi,yi 牛能做為牛國的國王,決定給小鎮之間建設一些道路,以便於任意小鎮之間都能相互到達,在第個小鎮和第個小鎮之間建設一條道路的花費是 xi xi yi xj xj yj yi yi yi 2 ...

牛客練習賽16 B 漂亮的樹,C 任意點

時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 街上有n棵樹,標號為1.n,第i棵樹的高度為a i。定義這n棵樹是漂亮的,當且僅當 1.對於所有的i,a i an i 1 2.對於1 i n 2 不是整除 a i 1...