9.19闲话
今天没太摆!
上午睡觉了。
下午睡觉了。
晚上睡觉了。
充实的一天。
妈的终于把集训时候的饭票给退了,妈的傻逼 wangk 他妈开高团就开高团不问问我们就花我们钱是什么意思啊😅😅😅,自己家里个个有矿是吧😅。你就集训一个月你用你妈的高级团队啊🤣,S2OJ 放这是给你当摆设的?😓😓😓还是说 S2 没搞成 rmj 啊😅,再怎么不济合着你就不能 vjudge 上直接搞个题单😅,合着非就想给洛谷白送那 11 个月的高级团队呢🤣,曺檷嘜傻逼玩意。
我 8 月没要饭票我赢赢赢🤣👉
crimson000:
芙门是信奉芙兰朵露的教吗/se
crimson000:
那石门是不是就是信仰小石头的教了/se
推歌:ヒカリ -めらみぽっぷ
AGC005D
我们先进行一个二项式反演,我们直接钦定有 \(j\) 个位置满足 \(|p_i-i|=k\),我们设放置 \(j\) 个 \(|p_i-i|=k\) 的 \(p_i\) 的方案数为 \(g_j\)。那么最终答案为:
现在我们要求的就是 \(g_j\)。我们将图分为左部和右部,其中左部为下标,右部为值,将左部的 \(i\) 和右部的 \(i\pm k\) 连边,最终得到的图一定是一堆链。我们的目标就是选出 \(j\) 条边并且使得两条边没有公共顶点。
我们可以把这堆链先首尾相连方便 dp。我们设 \(f_{i, j, 0/1}\) 为前 \(i\) 条边选了 \(j\) 条,同时第 \(i\) 条边是否选择的方案数,那么我们有转移:
而当 \(i\) 是链顶时,它不存在 \(f_{i, j, 1}\)。当 \(i\) 不是链顶时,转移有:
最终 \(g_{i}\) 就为 \(f_{n\times 2, i, 0}+f_{n\times 2, i, 1}\)。
另一种求法:
我们对每条链分别处理,\(i\) 个物品中选 \(j\) 个不相邻物品的方案数为 \(\dbinom{i-j+1}{j}\),那么我们把它的 OGF 写出来后,对每条链所对应的 OGF 进行一个卷积即为我们要求的 \(G(x)\)。
时间复杂度 \(O(n^2)\) 或 \(O(n\log n)\)。
小日子题确实不错/qd