「解题报告」CF960G Bandit Blues
无脑的 APJ 用最无脑的方法解题!!!做了两天图论脑子爆炸后的 apj 寻求精神慰藉
首先考虑
考虑每次将当前排列中的最大值与最大值后面的排列去掉,这样就能递归到一个子问题里。例如
然后把组合数拆一下,移项,得:
后面求和指标换一下:
然后无脑写成生成函数,设
这个式子直接做看起来还是不可做。我们代具体的式子进去试试:
由于有
由此归纳可以得出
回到原问题来,我们枚举了中间的最大值的位置
其实最后还是第一类斯特林数,我这是不是相当于自己把第一类斯特林数的生成函数推导了一遍啊,呃呃。
int main() {
scanf("%d%d%d", &n, &a, &b);
if (a == 0 || b == 0 || n - a - b + 1 < 0) {
printf("0\n");
return 0;
}
fac[0] = 1;
for (int i = 1; i <= n; i++) fac[i] = 1ll * fac[i - 1] * i % P;
inv[n] = qpow(fac[n], P - 2);
for (int i = n; i >= 1; i--) inv[i - 1] = 1ll * inv[i] * i % P;
f.set(n - 1);
for (int i = 0; i < n; i++) f[i] = qpow(i + 1, P - 2);
f = f.pow(a + b - 2, n);
printf("%lld\n", 1ll * fac[n - 1] * f[n - a - b + 1] % P * inv[a - 1] % P * inv[b - 1] % P);
return 0;
}
分类:
题解
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话