思路:
因為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...