對於所有資料,有ai先考慮暴力dp
設 f[i][j]為從根節點到i的路徑上有多少條結尾權值為j的路徑,最後加上所有wx=1的節點的f[x][2]就行。
考慮優化
我們發現每到⼀個節點,f[i] 相對於 f[f[ai]]只改變了乙個位置。那麼我們只需要通過dfs來維護乙個全域性的dp陣列,來表示出每個節點的f即可。
即在進入個點時修改f ,退出時把這個點的影響消除。
現在的問題是如何快速地計算gx
看起來不能用桶直接從子樹搞上來,因為涉及到合併的問題。
但是大佬又提供了一種神奇的思路:直接將g值加入桶中,從x往下遞迴之前先記一下,遞迴回來之後作差,就可以得到子樹對gx的貢獻。
#include
#define n 1000005
#define ll long long
#define mod 1000000007
using
namespace std;
int n,m,l,lim,fa[n]
,a[n]
,b[n]
,now;
int cnt,e[n]
,nx[n]
,ls[n]
;ll sum,vf[n]
,vg[n]
,ans,d[n]
;void
dfs(
int x)
(vg[a[x]]+
=g0)
%=mod;
}int
main()
now+
=lim;
}printf
("%lld"
,(ans%mod+mod)
%mod)
;}
JZOJ 省選模擬 string
一行乙個整數表示答案。sample input 樣例輸入 3 3sample output 樣例輸出 首先我們忽略重複的字串,定義 n 表示長度為 n 的回文串,或由兩個回文串拼成的字串數量。那麼可以通過列舉第乙個回文串的長度 可以為 0 可以算出f n 但是正如剛才所說,會對如 abaaba 這樣...
JZOJ 省選模擬 Moorio Kart
description 由於目前可供奶牛們使用的約會 並沒有給 farmer john 留下深刻印象,他決定推出乙個基於新匹配演算法的奶牛交友 該演算法可基於公牛和母牛間的共同興趣對公牛和母牛進行匹配。bessie 在尋找情人節 barn dance 的合作夥伴時,決定試用這個 在註冊賬戶之後,fj...
JZOJ 省選模擬 挖寶
description 有乙個挖寶遊戲,它在一棵 n 個點的樹上進行,寶藏埋在某個未知的點 每次挖掘乙個點 u,玩家得到的反饋資訊是乙個數值 d,表示 u 號點到 號點簡單路徑上的邊數。這個遊戲會進行 q 次,每次遊戲藏寶的位置不一定相同。你作為一名優秀的 er,對自己無比自信。你希望用最少的挖掘次...