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

[Atcoder]F - Road of the King

[Atcoder]F - Road of the King

大意

有一个人在 \(1\) 号点要进行 \(m\) 次移动,终点不必是 \(1\) 号点,假设第 \(i\) 次从 \(u\) 移动到 \(v\),那么在 \(u\)\(v\) 之间连一条有向边。

问有多少种操作序列能满足:最终 \(n\) 个点组成的图是一个强连通图。

思路

由于题目的数据范围,我们可以得知,大概是个 \(n ^ 3\) 的玩意。

但是我们需要仔细想想怎么计数?

首先,这个玩意和什么有关?

第一肯定是步数,第二是点是否走过,第三是这个点和为我们要的强连通图的关系。

然后我们考虑最难的问题,就是这个强连通图怎么判断,怎么累加答案?我们走到一个点的时候怎么判断其是否能与原来的形成一个强连通呢?还是说其目前自己和其他点成强连通,需要后续的操作去整。

不难发现,其实一个点,其强连通关系只有两种,第一种就是和起点在一个强连通里面,第二种,就是不在起点的强连通里面。

我们定义 \(f_{i, j, k}\) 表示目前已经走了 \(i\) 步,已经访问了 \(j\) 个点,与起点 \(1\) 形成的强连通的大小为 \(k\)。(以下所说的形成强连通均是与 \(1\) 形成)

考虑转移。

首先走到点,第一种情况,是没有走过,于是我们有:

\[f_{i + 1, j + 1, k} \to f_{i + 1,j + 1, k} + f_{i, j, k} \times (n - j) \]

第二种,是走过,但是没有形成强连通的点:

\[f_{i + 1, j, k} \to f_{i + 1, j, k} + f_{i, j, k} \times (j - k) \]

第三种是,走过,且已经形成了强连通:

\[f_{i + 1, j, k} \to f_{i + 1, j, k} + f_{i, j, k} * k \]

于是我们的答案就在 \(f_{m, n, n}\)

代码

#include<iostream>
using namespace std;#define int long longconst int MAXN = 305;
const int MOD = 1e9 + 7;//f[i][j][k] 走了 i 步,访问了 j 个点,以 1 为根的 scc 大小为 k
int f[MAXN][MAXN][MAXN];int n, m;signed main(){freopen("rotk.in", "r", stdin);freopen("rotk.out", "w", stdout);ios::sync_with_stdio(0);cin.tie(0);cin >> n >> m;f[0][1][1] = 1;for(int i = 0;i <= m - 1;i ++){for(int j = 1;j <= n;j ++){for(int k = 1;k <= n;k ++){if(!f[i][j][k]) continue;//没走的f[i + 1][j + 1][k] += f[i][j][k] * (n - j) % MOD;f[i + 1][j + 1][k] %= MOD;//走过,但不在 1 的sccf[i + 1][j][k] += f[i][j][k] * (j - k) % MOD;f[i + 1][j][k] %= MOD;//走过,在 1 的 sccf[i + 1][j][j] += f[i][j][k] * k % MOD;f[i + 1][j][j] %= MOD;}}}cout << f[m][n][n] % MOD << '\n';return 0;
}
http://www.jsqmd.com/news/89342/

相关文章:

  • 深度学习实验14代码
  • 课堂测试总结1 - 23207104
  • Java 面向对象设计模式的应用与设计原则
  • TCP 通信从原理到代码:用仓库与快递箱的比喻读懂交互逻辑
  • springboot大学生租房平台的设计与实现(11486)
  • 调试功能的说明-–-behaviac
  • springboot房屋租赁系统(11487)
  • 【完全免费】一分钟教会你,如何利用浏览器插件在网页提取下载音乐mp3文件和音频、音效素材;电脑小白也能轻易上手。
  • mysql的索引页也是数据页吗?
  • springboot月度员工绩效考核管理系统(11488)
  • 优化及性能-–-behaviac
  • pytorch的一些学习资料
  • 智能体开发与传统后端开发的思维差异
  • 前端开发的一些规范
  • unity3d scene窗口选中物体, 在 hierarchy高光显示
  • 二、python语法基础
  • HyperLPR3 车牌识别(python3)
  • 使用cmake构建Cplusplus版运行时库-–-behaviac
  • pytesseract 中英文 识别图片文字
  • 开源高性能IM+集成AI能力,基于SpringBoot +Tauri+Vue 3+TypeScript支持全平台与丰富会话模式
  • 基于 GEE 的 Landsat 8 数据构建遥感生态指数(RSEI)并进行生态质量评估
  • FOC开发工具学习
  • 类和对象(上)
  • 智能体开发系统学习实践
  • 马上2026年了,copilot还能用吗?
  • mysql中的索引页是什么?
  • 数据页和索引页有什么区别?
  • 《终极金钱心智》
  • 一文讲透XGBoost:从原理到实践的完整指南
  • 第13章:项目资源管理【章节重点】