JZOJ 省選模擬 6655 三國學者

2021-10-06 18:06:04 字數 1470 閱讀 6621

對於所有資料,有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,對自己無比自信。你希望用最少的挖掘次...