小水題。題意就是不斷隨機放乙個 \(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並不在意兩隻襪子是不是完整的一雙,甚至不在意兩隻襪子是否一左一右,他卻很在意襪子...