[Atcoder]F - Road of the King

news/2025/12/14 21:58:31/文章来源:https://www.cnblogs.com/To-Carpe-Diem/p/19349977

[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.mzph.cn/news/1015119.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习实验14代码

实验前准备 数据集 # make data import random import numpy as np import os # 固定随机种子 random.seed(0) np.random.seed(0)def generate_data(length, k, save_path):if length < 3:raise ValueError("The length of data should be greater than 2.")if k …

课堂测试总结1 - 23207104

一、判断题错题分析总结 1. 接口方法特性 原题 接口只包含常量和抽象方法,接口中定义的方法只能是抽象方法。 我的答案 T(正确) 正确答案 F(错误) 分析 从Java 8开始,接口中不仅可以包含抽象方法,还可以包含:默…

Java 面向对象设计模式的应用与设计原则

设计模式是Java面向对象编程的高级应用形式&#xff0c;是对软件开发中常见问题的标准化解决方案&#xff0c;也是Java学术研究与工程实践的重要结合点。GoF&#xff08;四人组&#xff09;提出的23种设计模式&#xff0c;基于封装、继承、多态的核心特性&#xff0c;将代码设计…

TCP 通信从原理到代码:用仓库与快递箱的比喻读懂交互逻辑

引言&#xff1a; https://github.com/0voice 在我们日常使用的聊天软件、文件传输工具、网页浏览背后&#xff0c;都藏着网络通信协议的身影&#xff0c;其中 TCP&#xff08;传输控制协议&#xff09;是最核心、最常用的一种。它就像现实世界中一条可靠的 “快递通道”&…

springboot大学生租房平台的设计与实现(11486)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 二、资料介项目演示视频绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告&#xff09;远程调试控屏包运行 三、技术介绍 Java语言…

调试功能的说明-–-behaviac

原文 behaviac提供了离线调试以及连调功能。 离线调试 离线调试功能是指在编辑器里加载运行时产生的 _behaviac_$_.log 文件&#xff0c;如下图&#xff0c;可以加载 _behaviac_$_.log 文件&#xff1a; _behaviac_$_.log 是运行游戏时产生的log文件。一般都是产生在exe所在…

springboot房屋租赁系统(11487)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告&#xff09;远程调试控屏包运行 三、技术介绍 Java…

【完全免费】一分钟教会你,如何利用浏览器插件在网页提取下载音乐mp3文件和音频、音效素材;电脑小白也能轻易上手。

——软件使用教程—— 一分钟教会你&#xff0c;如何利用浏览器插件在网页提取下载音乐mp3文件——下载地址&#xff08;防止被拦截&#xff0c;请用浏览器打开&#xff09;—— 夸克地址&#xff1a; https://pan.dxlszyk.com/s/1jcee812a 多盘地址&#xff1a; https://w…

mysql的索引页也是数据页吗?

1.是的&#xff0c;索引页是数据页的一种&#xff0c;专门用于存储索引数据结构的数据页

springboot月度员工绩效考核管理系统(11488)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告&#xff09;远程调试控屏包运行 三、技术介绍 Java…

优化及性能-–-behaviac

原文 优化及性能 宏BEHAVIAC_RELEASE定义的时候是最终版&#xff0c;BEHAVIAC_RELEASE没有定义的时候是为开发版。 在debug版中&#xff0c;BEHAVIAC_RELEASE缺省下没有定义的。诸如logging、socketing、热加载等开发功能是有效的。可以通过behaviac::Config::IsLogging和be…

pytorch的一些学习资料

https://github.com/yunjey/pytorch-tutorial pytorch的一些学习资料

智能体开发与传统后端开发的思维差异

JAVA后端开发 AI Agent(智能体) 核心优势在于工程化能力(高并发、微服务、稳定性、系统架构),而目前 AI 领域的痛点恰恰是从“Demo”走向“企业级生产”的过程。而因技术栈和“AI Native 应用”特点的不同,有以下几个思维方式的差异。 1. 核心思维转变:从“确定性编程”…

前端开发的一些规范

多人开发1&#xff0c;目录杂乱无章2&#xff0c;代码风格不统一3&#xff0c;接口传参不同意 比如有人post接口按照get接口传参4&#xff0c;错误码格式不统一 有字符串 有 数字有哪些规范&#xff0c;是否涉及代码分为两类1&#xff0c;非编码类规范 技术选型规范首先技术选型…

unity3d scene窗口选中物体, 在 hierarchy高光显示

在 Unity 中实现 “Scene 窗口选中物体时 Hierarchy 面板高光显示”&#xff0c;核心思路是监听 Scene 窗口的选择事件&#xff0c;并通过 Unity 的EditorGUIUtility和EditorWindow相关 API 主动高亮 Hierarchy 面板中对应的物体条目。以下是完整的实现方案&#xff1a;using U…

二、python语法基础

一、前言与概述前面了解了python安装以及环境的准备&#xff0c;下面是关于python语法基础的一个概要&#xff1a;二、语法内容&#xff08;一&#xff09;、基础语法开始之前&#xff1a;注释代码# 单行注释 """ 多行注释 """多行注释 1、变量与…

HyperLPR3 车牌识别(python3)

HyperLPR已经更新到了v3的版本&#xff0c;该版本与先前的版本一样都是用于识别中文车牌的开源图像算法项目&#xff0c;最新的版本的源码可从github中提取&#xff1a;https://github.com/szad670401/HyperLPR一、安装扩展 python -m pip install hyperlpr3 https://pypi.tuna…

使用cmake构建Cplusplus版运行时库-–-behaviac

原文 请首先到/language/zh/downloads/下载或克隆源码。 缺省的&#xff0c;我们使用cmake来生成对应平台的项目文件&#xff08;sln或make文件等&#xff09;。 但cmake不是必须的&#xff0c;也可以选择自己喜欢的方式创建自己的项目文件。比如&#xff0c;使用premake等来…

pytesseract 中英文 识别图片文字

要使用 pytesseract 识别图片文字,你需要先安装 Tesseract OCR引擎 和 Pillow库,然后通过几行 Python 代码导入库、加载图片,并调用 image_to_string() 函数进行识别,传入图片路径和指定语言 (如 ‘eng’ 或 ‘chi_sim’) 即可获得文本内容。 步骤 1: 安装 Tesseract OCR引…

基于 GEE 的 Landsat 8 数据构建遥感生态指数(RSEI)并进行生态质量评估

目录 一、前言 二、基础参数定义&#xff08;第 1-2 步&#xff09; &#xff08;一&#xff09;研究区定义 &#xff08;二&#xff09;时间范围与可视化参数 三、Landsat 8 影像加载与预处理&#xff08;第 3 步&#xff09; &#xff08;一&#xff09;核心目标 &…