JZOJ 省選模擬 6707 異或樹(xor)

2021-10-06 23:20:04 字數 1419 閱讀 4469

樣例輸入1:

2 2 998244353

樣例輸入2:

10 3 998244353

sample output

樣例輸出1:

24樣例輸出2:

考慮知道點權怎麼求

建出trie,對於trie的每個節點,如果它既有0兒子,又有1兒子,那麼這兩棵子樹分別聯通後,要找一條最小的邊把它們連起來。

於是我們可以列舉這個節點的深度,再列舉它的左子樹和右子樹的大小,問題轉換為:

有x和y個k位二進位制數,求它們之間的異或最小值。

設f[x][y][z][u]為有x和y個k位二進位制數,最小值≥u的方案數。

#include

#define ll long long

using

namespace std;

const

int n=

57,m=

1<<9;

ll mod;

ll power

(ll x,ll t)

return b;

}int n,m,_2[10]

;ll c[m]

[m],p[n]

[n][10]

[m],b[n]

;void

init

(int n)

}int

main()

for(

int i=

1; i<=n; i++

)for

(int j=

1; j<=n-i; j++

)for

(int k=

1; k<=m; k++)}

ll s=p[i]

[j][k]

[_2[k-1]

];for(

int w=

0; w<_2>

; w++

) p[i]

[j][k]

[w]=

(p[i]

[j][k]

[w]+s)

%mod;

} ll ans=0;

for(

int i=

1; i<=m; i++)}

printf

("%lld\n"

,ans)

;}

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