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

ARC140D One to One

ARC140D One to One

题目大意

对于一个长度为nnn的整数序列X=(x1,x2,…xn)X=(x_1,x_2,\dots x_n)X=(x1,x2,xn),每个元素都在111nnn之间,令f(X)f(X)f(X)表示以下问题的答案:

  • 有一个nnn个顶点nnn条边的无向图(可能有重边和自环),第iii条边连接iiiXiX_iXi,求联通块的数量

给一个正整数nnn和一个长度为nnn的序列A=(a1,a2…an)A=(a_1,a_2\dots a_n)A=(a1,a2an),其每一个元素都在111nnn之间,或者为−1-11

你可以将每个值为−1-11aia_iai变为任意一个111nnn之间的数,求所有情况下f(A)f(A)f(A)的和。输出答案对998244353998244353998244353取模。


题解

kkk表示ai=−1a_i=-1ai=1的元素的个数。

我们可以先将ai≠−1a_i\neq -1ai=1的边连上,那么现在图上的每一个连通块都是树或环或基环树。

如果是树的话,则这个连通块有且只有一个ai=−1a_i=-1ai=1的点

如果是环或基环树的话,则这个连通块没有ai=−1a_i=-1ai=1的点

我们可以先把环和基环树的贡献算出来,每个环或基环树的贡献为nkn^knk,因为不管怎么连,环或基环树都会有111的贡献。那么如果有树向环或基环树连边,则这棵树不计算贡献。

树与环或基环树连边的贡献不需计算,那么我们只需要求树与树连边的贡献了。

因为每棵树只有一条边连出去,所以我们可以将每棵树看成一个点。

如果不连向环和基环树,那么这些树一定会形成一个环。对于一个顺序已确定的环,形成这样的环的方案数为∏sizi\prod siz_isizi

我们考虑DP。设fif_ifi表示形成长度为iii的环的方案数,那么对于每个点jjj,有转移式

fi=fi+fi−1×sizkf_i=f_i+f_{i-1}\times siz_kfi=fi+fi1×sizk

求出fff后我们考虑如何计算答案。对于所有长度为iii的环的贡献为fi×(i−1)!×nk−if_i\times (i-1)!\times n^{k-i}fi×(i1)!×nki。其中(i−1)!(i-1)!(i1)!表示iii个点按不同顺序可以构成(i−1)!(i-1)!(i1)!个不同的环,nk−in^{k-i}nki表示其他n−kn-knk个点可以任意连边。

这样问题就解决了,时间复杂度为O(n2)O(n^2)O(n2)

code

#include<bits/stdc++.h>
using namespace std;
int n,tot=0,vt=0,a[2005],d[5005],l[5005],r[5005],s[2005],z[2005],siz[2005];
long long ans,f[2005],jc[2005],mi[2005];
long long mod=998244353;
void add(int xx,int yy){l[++tot]=r[xx];d[tot]=yy;r[xx]=tot;
}
void dfs(int u){z[u]=1;siz[u]=1;for(int i=r[u];i;i=l[i]){if(!z[d[i]]){dfs(d[i]);siz[u]+=siz[d[i]];}}
}
int main()
{scanf("%d",&n);jc[0]=mi[0]=1;for(int i=1;i<=n;i++){jc[i]=jc[i-1]*i%mod;mi[i]=mi[i-1]*n%mod;}for(int i=1;i<=n;i++){scanf("%d",&a[i]);if(a[i]==-1) continue;add(i,a[i]);add(a[i],i);}for(int i=1;i<=n;i++){if(a[i]==-1){dfs(i);s[++vt]=siz[i];}}for(int i=1;i<=n;i++){if(!z[i]){dfs(i);ans=(ans+mi[vt])%mod; }}f[0]=1;for(int i=1;i<=vt;i++){for(int j=i;j>=1;j--) f[j]=(f[j]+f[j-1]*s[i]%mod)%mod;}for(int i=1;i<=vt;i++){ans=(ans+f[i]*jc[i-1]%mod*mi[vt-i]%mod)%mod;}printf("%lld",ans);return 0;
}

相关文章:

ARC140D One to One

ARC140D One to One 题目大意 对于一个长度为nnn的整数序列X(x1,x2,…xn)X(x_1,x_2,\dots x_n)X(x1​,x2​,…xn​)&#xff0c;每个元素都在111到nnn之间&#xff0c;令f(X)f(X)f(X)表示以下问题的答案&#xff1a; 有一个nnn个顶点nnn条边的无向图&#xff08;可能有重边和…...

联合身份验证与Cognito

Hello大家好&#xff0c;我们接下来讨论AWS联合身份验证的内容。 AWS联合身份验证 对于考试&#xff0c;联合身份验证部分是一块非常重要的内容。那什么是联合身份验证&#xff0c;它是做什么用的呢&#xff1f; 联合身份验证&#xff0c;是用来允许AWS外部用户&#xff0c;如…...

day18_常用API之String类丶Object类

String概述 java.lang.String 类代表字符串&#xff0c;String类定义的变量可以用于指向字符串对象&#xff0c;同时String类提供了很多操作字符串的功能&#xff0c;我们可以直接使用。Java 程序中的所有字符串文字&#xff08;例如“abc”&#xff09;都为此类的对象 特点:St…...

OSG三维渲染引擎编程学习之五十五:“第五章:OSG场景渲染” 之 “5.13 一维纹理”

目录 第五章 OSG场景渲染 5.13 一维纹理 5.13.1 一维纹理介绍 5.13.2 一维纹理示例 第五章 OSG场景渲染 OSG存在场景树和渲染树,“场景数”的构建在第三章“OSG场景组织”已详细阐明,本章开始...

RTOS随笔之FreeRTOS启动与同步方法

RTOS启动与同步机制RTOS启动任务切换场景任务同步机制队列信号量事件组任务通知任务延时RTOS启动 FreeRTOS在任务创建完成后调用函数vTaskStartScheduler()启动任务调度器。 vTaskStartScheduler()任务启动函数详解 void vTaskStartScheduler( void ) {BaseType_t xReturn;xR…...

【AI/NLP】InstructGPT数据标注问题

文章目录1 背景介绍2 标记员筛选2.1 标记员筛选标准3 数据集及其标注3.1 预训练3.2 微调3.2.1 SFT-demonstration data3.2.2 RM-comparison data3.3 数据集大小4 模型实现1 背景介绍 ChatGPT的训练过程与InstructGPT相近&#xff0c;大致分为三步&#xff1a; SFT&#xff1a…...

三次握手和四次挥手

文章目录TCP三次握手为什么要三次握手三次握手可以携带数据吗&#xff1f;三次握手失败&#xff0c;服务端会如何处理?ISN代表什么&#xff0c;意义&#xff0c;何要动态随机什么是半连接队列第2次握手传回了ACK&#xff0c;为什么还要传回SYN&#xff1f;为什么要四次挥手TCP…...

Jmeter常用断言之响应断言详解

响应断言是最常用的一种断言方法&#xff0c;主要是对响应结果中的文本内容进行断言&#xff0c;比如响应结果是否包含指定的值&#xff0c;或者是否等于指定的值。响应断言可以适用各种返回类型的响应结果&#xff0c;如&#xff1a;Test、html、application/json、applicatio…...

【Python学习笔记】36.Python3 MySQL - mysql-connector 驱动(1)

前言 MySQL 是最流行的关系型数据库管理系统&#xff0c;本章节为大家介绍使用 mysql-connector 来连接使用 MySQL&#xff0c; mysql-connector 是 MySQL 官方提供的驱动器。 Python3 MySQL - mysql-connector 驱动 我们可以使用 pip 命令来安装 mysql-connector&#xff1…...

计算机SCI论文课题设计需要注意什么? - 易智编译EaseEditing

课题设计就要本着严谨性和可行性来进行。实验设计的类型要选择准确&#xff0c;统计学的方法要运用合理&#xff0c;研究对象和观察指标的选择也要符合研究目的的要求&#xff0c;技术路线要清晰明了。 关于课题的设计的可行性也要综合考虑&#xff0c;比如前期的相关工作基础…...

Quartz入门教程

本文参考文章编写 Quartz 官网 Quartz 是 OpenSymphony 开源组织在 Job Scheduling 领域又一个开源项目&#xff0c;是完全由 Java 开发的一个开源任务日程管理系统&#xff0c;“任务进度管理器”就是一个在预先确定&#xff08;被纳入日程&#xff09;的时间到达时&#xff…...

TypeScript 学习之 function

函数可以实现抽象层&#xff0c;模拟类&#xff0c;信息隐藏和模块。 函数有&#xff1a;有名字的函数、匿名函数 在 JavaScript 中的函数 // 有名字的函数 function add(x, y) {return x y; }// 匿名函数 let myAdd function (x, y) {return x y; };函数类型 typescript 可…...

【云计算自学路线】

云计算包含的技术内容和涉及的方向比较多&#xff0c;一定要进行系统化的学习才能更好的掌握这门技术。 云计算作为互联网新技术领域&#xff0c;现阶段也是出于高速发展期&#xff0c;想学习加入云计算行业的小伙伴可以抓紧机会了&#xff0c;跟着小课一起来了解云计算以及它…...

code01 v2黑屏、花屏、死机、断电重启、休眠死机的进来

症状解决 长话简说&#xff0c;症状如下&#xff1a; 使用浏览器、播放视频等&#xff0c;遇到突然死机或花屏死机的情况 关闭硬件加速&#xff0c;如&#xff1a;浏览器中设置关闭硬件加速&#xff0c;出现这种症状的软件都需要设置 开机电流音、播放与暂停时喇叭吱吱想、打…...

分享107个HTML电子商务模板,总有一款适合您

分享107个HTML电子商务模板&#xff0c;总有一款适合您 107个HTML电子商务模板下载链接&#xff1a;https://pan.baidu.com/s/1VW67Wjso1BRpH7O3IlbZwg?pwd0d4s 提取码&#xff1a;0d4s Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 Aplustemplates 购物模板…...

Barra模型因子的构建及应用系列三之Momentum因子

一、摘要 在之前的Barra模型系列文章中&#xff0c;我们已经初步讲解、构建了Size因子和Beta因子&#xff0c;并分别创建了对应的单因子策略。通过回测发现&#xff0c;其中Size因子的小市值效应具有很强的收益能力。而本篇文章将在该系列下进一步构建Momentum因子。 二、模型…...

8.2.1.3 索引合并优化

索引合并访问方法检索具有多个范围扫描的行&#xff0c;并将其结果合并为一个。此访问方法仅合并来自单个表的索引扫描&#xff0c;而不是跨多个表的扫描。合并可以生成其基础扫描的合并、交叉或交叉的合并。 可以使用索引合并的查询示例&#xff1a; SELECT * FROM tbl_name…...

水雨情在线小能手-雨量水位报警站

雨量水位报警站由水位探测器、雨量传感器、报警灯、扩音器、太阳能板和采集传输控制器组成。实时采集水位等级&#xff0c;三个水位探测器对应3个水位等级&#xff0c;当现场水面浸没相应探测器时&#xff0c;本机会实时发出语音报警&#xff0c;同时可发送相应的预警/报警等级…...

【蓝桥杯集训4】双指针专题(6 / 6)

目录 3768. 字符串删减 - 滑动窗口ac 799. 最长连续不重复子序列 - 滑动窗口 800. 数组元素的目标和 - 二分ac 2816. 判断子序列 - 双指针 1238. 日志统计 - 滑动窗口 1240. 完全二叉树的权值 - 双指针 1、前缀和 - 通过了 5/12个数据 2、双指针 3768. 字符串删减 -…...

文件流,gzip解压,压缩

目录 文件画布 写入 &#xff08;空文件Foutnew File(Parent,entry.getName());&#xff09;FileOutputStream outnew FileOutputStream(Fout);BufferedOutputStream Boutnew BufferedOutputStream(out);其他流量基于基础包装文件--文件流---字节流 顺序pbf一般是形成后再压缩目…...

Ubuntu16.04下MINIGUI 3.2.0环境搭建避坑指南:从依赖安装到HelloWorld运行

Ubuntu 16.04下MINIGUI 3.2.0环境搭建全流程与深度优化指南 为什么选择MINIGUI与Ubuntu 16.04的组合 MINIGUI作为国内自主研发的轻量级GUI系统&#xff0c;在嵌入式领域已有二十余年的技术沉淀。3.2.0版本在保持轻量级特性的同时&#xff0c;增强了对现代嵌入式设备的支持。而U…...

能耗效率比拼:百川2-13B量化版在OpenClaw长时间任务中的表现

能耗效率比拼&#xff1a;百川2-13B量化版在OpenClaw长时间任务中的表现 1. 测试背景与目标 最近在探索如何用OpenClaw实现个人工作流的自动化时&#xff0c;遇到一个现实问题&#xff1a;当需要长时间运行自动化任务时&#xff0c;本地设备的能耗和稳定性会成为瓶颈。我决定…...

RS485接口EMC设计与防护电路实现

RS485接口电路的EMC设计与工程实现1. 项目概述1.1 RS485接口的EMC挑战RS485作为工业通信标准接口&#xff0c;其典型应用场景中信号走线常与电源线、功率信号线混合布线&#xff0c;导致以下EMC问题&#xff1a;共模干扰通过长距离传输线耦合浪涌脉冲对接口电路的冲击损坏高频噪…...

OpenClaw语音交互扩展:百川2-13B+Whisper实现语音指令控制

OpenClaw语音交互扩展&#xff1a;百川2-13BWhisper实现语音指令控制 1. 为什么需要语音交互能力 去年冬天的一个深夜&#xff0c;我正在调试OpenClaw的自动化脚本&#xff0c;双手因为长时间敲键盘已经有些僵硬。突然想到&#xff1a;如果能让AI听懂我的语音指令直接执行任务…...

Biolaminin 层粘连蛋白(LN521)在干细胞培养中的作用与应用解析【曼博生物官方代理BioLamina】

摘要&#xff1a;人类重组层粘连蛋白&#xff08;Laminin&#xff09;&#xff0c;尤其是LN521亚型&#xff0c;在多能干细胞培养中具有重要作用。本文从细胞微环境、培养体系及应用场景角度&#xff0c;对其在干细胞研究与转化中的价值进行系统梳理。 关键词&#xff1a;LN521…...

快速上手Qwen3-TTS:无需代码,Web界面直接合成10种语言语音

快速上手Qwen3-TTS&#xff1a;无需代码&#xff0c;Web界面直接合成10种语言语音 1. 为什么选择Qwen3-TTS语音合成 语音合成技术正在改变我们与数字世界的交互方式。想象一下&#xff0c;你正在制作一个多语言教学视频&#xff0c;或者开发一个国际化的智能客服系统&#xf…...

终极桌面歌词解决方案:LyricsX 让你的音乐体验全面升级

终极桌面歌词解决方案&#xff1a;LyricsX 让你的音乐体验全面升级 【免费下载链接】Lyrics Swift-based iTunes plug-in to display lyrics on the desktop. 项目地址: https://gitcode.com/gh_mirrors/lyr/Lyrics 在macOS平台上享受音乐时&#xff0c;你是否曾渴望拥有…...

实验结果与分析篇 | 本科/硕士必备,一文搞定实验结果与分析部分!基于改进 ConvNeXt 的农作物病虫害识别系统

前言 “代码跑通了&#xff0c;论文怎么写&#xff1f;”&#xff0c;这恐怕是无数 CV 算法/人工智能萌新在面对毕设或期刊投稿时最大的痛。纯缝合模型容易被拒&#xff08;看你写作能力了&#xff09;&#xff0c;实验分析写成了干巴巴的报流水账&#xff0c;缺乏深度的理论支…...

KKManager终极指南:三步轻松管理你的游戏Mod和插件

KKManager终极指南&#xff1a;三步轻松管理你的游戏Mod和插件 【免费下载链接】KKManager Mod, plugin and card manager for games by Illusion that use BepInEx 项目地址: https://gitcode.com/gh_mirrors/kk/KKManager KKManager是一款专为Illusion系列游戏设计的M…...

Phi-3 Forest Laboratory创意图像提示词生成效果:将抽象概念转化为视觉描述

Phi-3 Forest Laboratory创意图像提示词生成效果&#xff1a;将抽象概念转化为视觉描述 你有没有过这样的经历&#xff1f;脑子里冒出一个特别酷的画面&#xff0c;比如“赛博朋克风格的孤独”&#xff0c;或者“初夏清晨的宁静”&#xff0c;感觉特别有味道&#xff0c;但就是…...