集訓隊作業2018 小Z的禮物

2022-05-05 12:18:09 字數 1070 閱讀 9691

小水題。題意就是不斷隨機放乙個 \(1 \times 2\) 骨牌,然後取走裡面的東西。求期望多少次取走所有的東西。然後有一維很小。

首先顯然 minmax 容斥,將最後取走轉化為欽定一些物品,求第乙個取走的期望。

然後顯然第乙個取走的期望只和剩下能蓋到物品的骨牌數有關。

乙個骨牌能蓋到物品只和相鄰的兩個格仔是否欽定了物品有關。這個顯然可以輪廓線優化。

然後套用 minmax 容斥公式直接算出來。

複雜度 \(o\left(n^2m^2 2^n\right)\)

#include const int mod = 998244353;

typedef long long ll;

void reduce(int & x)

int mul(int a, int b)

int fastpow(int a, int b, int res = 1)

int dp[2][1 << 6][1200], ansl[1200];

int n, m;

bool mat[110][10];

char buf[110];

int main()

const int u = 1 << n;

int lst = 0, now = 1;

dp[now][0][0] = mod - 1;

for (int i = 0; i != m; ++i)

}} }

for (int i = 0; i != u; ++i)

for (int j = 0; j <= e; ++j)

reduce(ansl[j] += dp[now][i][j] - mod);

int ans = 0;

for (int i = 0; i < e; ++i)

reduce(ans += fastpow(e - i, mod - 2, ansl[i]) - mod);

ans = mul(ans, e);

std::cout << ans << std::endl;

return 0;

}

集訓隊作業2018 喂鴿子

設 f n 表示有 n 只鴿子,每次等概率選乙隻喂,期望餵飽第一只鴿子的時間,f 表示有 n 只鴿子,已經喂了 m 次,此時這 n 只鴿子中沒有鴿子被餵飽的概率。ans sum n 1 f i f n sum sum f frac sum f sum frac 注意到有 dfrac n sum x ...

集訓隊作業2018 矩陣玩小凹 NTT

有乙個 n times m 的矩陣 a 每個元素都是 0,1 內的等概率隨機實數,記 s i sum ma 求 lfloor min s i rfloor k 的期望。對 998244353 取模。n leq 9,m leq 5 times 5,k leq 9 我們只用求 lfloor s i rf...

2038 國家集訓隊 小Z的襪子 莫隊

作為乙個生活散漫的人,小z每天早上都要耗費很久從一堆五顏六色的襪子中找出一雙來穿。終於有一天,小z再也無法忍受這惱人的找襪子過程,於是他決定聽天由命 具體來說,小z把這n只襪子從1到n編號,然後從編號l到r l 儘管小z並不在意兩隻襪子是不是完整的一雙,甚至不在意兩隻襪子是否一左一右,他卻很在意襪子...