当前位置: 首页 > news >正文

CF1704H1 Game of AI (easy version)

考虑如果确定了 \(a\),怎么去算 \(b\) 的方案数。

对于一次赋值 \(b_{p_i}\leftarrow p_i\),考虑钦定其为最后一次对 \(b_{a_{p_i}}\) 的修改,那么相当于把 \(a_{p_i}\) 锁定。

于是,如果当前 \(p_i=x\),那么我们可以决定是否把 \(x\) 锁定,以及是否把 \(a_x\) 锁定。

考虑如果在 \(x\)\(a_x\) 锁定,那么将 \(x\)\(a_x\) 连一条边。显然新图由若干条链和单点组成,而且我们可以通过新图还原出唯一一个 \(b\)

但是这样的链划分不一定全部合法。对于一个单点 \(x\),需要 \(a_x\) 不为单点,且 \(a_x\) 不为一条链的起点。这个限制也是充分的。

这个做法可以对每个 \(a\) 求答案,但是并不好做对所有 \(a\) 求和。考虑反过来,对于一个已知的新图,算合法的 \(a\) 个数。

设新图中有 \(i\) 个单点,\(j\) 条链,那么首先组合出这个图的方案数是 \(\dbinom{n}{i}\dfrac{(n-i)!}{j!}\dbinom{n-i-j-1}{j-1}\)。然后对于单点,其出边必须是链上点,且不为起点,方案数 \((n-i-j)^i\)。对于链,可以任意连,方案数 \((n-1)^j\)。乘起来即可。

#include <bits/stdc++.h>
using namespace std;
using ll = long long;int mod;
void Add(int &x, ll y) {x = (x + y) % mod;
}
int Pow(int x, int y) {int b = x, r = 1;for(; y; b = (ll)b * b % mod, y /= 2) {if(y & 1) r = (ll)r * b % mod;}return r;
}const int kN = 5005;
int n;
int mul[kN], imul[kN], pw[kN][kN];void Init(int N = kN - 2) {mul[0] = 1;for(int i = 1; i <= N; i++) {mul[i] = (ll)mul[i - 1] * i % mod;}imul[N] = Pow(mul[N], mod - 2);for(int i = N - 1; ~i; i--) {imul[i] = (ll)imul[i + 1] * (i + 1) % mod;}for(int i = 0; i <= n; i++) {pw[i][0] = 1;for(int j = 1; j <= n; j++) {pw[i][j] = (ll)pw[i][j - 1] * i % mod;}}
}
int C(int n, int m) {if((n < m) || (m < 0)) {return 0;}return (ll)mul[n] * imul[m] % mod * imul[n - m] % mod;
}int main() {// freopen("1.in", "r", stdin);// freopen("1.out", "w", stdout);ios::sync_with_stdio(0), cin.tie(0);cin >> n >> mod;Init();int res = 0;for(int i = 0; i <= n; i++) {for(int j = 1; j * 2 + i <= n; j++) {int val = C(n, i);val = (ll)val * mul[n - i] % mod * imul[j] % mod * C(n - i - j - 1, j - 1) % mod;val = (ll)val * pw[n - i - j][i] % mod;val = (ll)val * pw[n - 1][j] % mod;Add(res, val);}}cout << res << "\n";return 0;
}
http://www.jsqmd.com/news/57258/

相关文章:

  • 2025 年 BI 部署服务商精选榜单 (赋能决策):企业智能 BI 私有化部署厂商 + BI 私有化部署方案商,解锁企业数据智能升级新路径
  • Java常见开发框架大比拼:Jeesite 、jeecgBoot、smartAdmin、ruoyi
  • 2025 年知识库部署服务商核心推荐 (安全高效):企业知识库部署厂商 + 知识库部署方案商,企业 AI 知识管理终极方案
  • 太顶了!全网最全的600+图片生成玩法!
  • 值得推荐的 geo 公司有哪些?2025 年 12 月精选榜单
  • 机构十大敲定,博士申请核心优势关联排行避风险
  • 2025年扬州公务员培训公司权威推荐榜单:考公培训班‌/公考培训班‌/公考培训‌源头公司精选
  • IDEA+mybatis实现员工管理系统
  • 上海geo优化公司避坑+优选清单
  • 2025年光伏太阳能环境监测系统供货厂家权威推荐榜单:光伏电厂气象站/光伏气象站/光伏电站环境监测仪源头厂商精选
  • 香港HPV检测推荐:权威机构与方案2025全指南
  • 表体只有一列表格
  • 完整教程:Notepad++ 全面快捷键指南(2025 最新版)
  • 跨行合并表格
  • 2025年脱硝设备厂商权威推荐榜单:PNCR脱硝器/高分子脱硝设备/干法脱硫设备源头厂商精选
  • 国内工厂生产管理系统的排名靠前的是哪些?(2025年小型企业实战选购榜)
  • 什么是嵌入式、单片机、STM32
  • 2025年下半年不锈钢旗杆品牌综合推荐指南:专业选购与行业解析
  • window本地部署overleaf
  • IDEA(2020版)实现MyBatis入门程序
  • 塑料养殖网安全警示网挤出机,三维网、塑料平网生产设备靠谱厂家推荐
  • 2025年下半年学校旗杆品牌综合推荐指南:专业选购与权威解析
  • 新加坡留学中介十大机构
  • vxe-gantt 甘特图使用右键菜单
  • 2025年活力菌仓品牌推荐榜:代餐/排毒/养颜/减脂/养肠/体控/通便神器/膳食纤维/肠道健康/活力菌仓公司综合参考,惠植健领衔,用科技焕活自然能量
  • 新加坡留学中介排行榜
  • Python文件二进制读取与字符读取区分
  • 现今品质好的安徽红枣加工厂口碑排行
  • work7
  • 实验4_CPP