HDU-7314 2023“钉耙编程”杭电多校赛(4)Data Generation

news2024/11/25 21:53:46

HDU-7314 2023“钉耙编程”杭电多校赛(4)Data Generation

题目大意

给定 n n n m m m,求下面的算法中 a n s ans ans的期望值模 998244353 998244353 998244353后的结果。

在这里插入图片描述
T T T组数据。

1 ≤ T ≤ 1 0 5 , 1 ≤ n ≤ 1 0 18 , 0 ≤ m ≤ 1 0 18 1\leq T\leq 10^5,1\leq n\leq 10^{18},0\leq m\leq 10^{18} 1T105,1n1018,0m1018

数据保证 n n n不是 998244353 998244353 998244353的倍数。


题解

显然对于每个 1 ≤ i ≤ n 1\leq i\leq n 1in m m m次交换后 a i ≠ i a_i\neq i ai=i的概率是相同的,那题意即求 [ a 0 ≠ 0 ] [a_0\neq 0] [a0=0]的期望值 × n \times n ×n,我们只需要求 [ a 0 ≠ 0 ] [a_0\neq 0] [a0=0]的期望值。

f i f_i fi表示在第 i i i次交换后 a 0 = 0 a_0=0 a0=0的概率, g i g_i gi表示在第 i i i次交换后 a 0 ≠ 0 a_0\neq 0 a0=0的概率。则递推式如下:

f i = f i − 1 × 1 + ( n − 1 ) 2 n 2 + g i − 1 × 2 n 2 f_i=f_{i-1}\times \dfrac{1+(n-1)^2}{n^2}+g_{i-1}\times \dfrac{2}{n^2} fi=fi1×n21+(n1)2+gi1×n22

g i = f i − 1 × [ 1 − 1 + ( n − 1 ) 2 n 2 ] + g i − 1 × ( 1 − 2 n 2 ) g_i=f_{i-1}\times [1-\dfrac{1+(n-1)^2}{n^2}]+g_{i-1}\times (1-\dfrac{2}{n^2}) gi=fi1×[1n21+(n1)2]+gi1×(1n22)

用矩阵优化:

[ f i g i ] = [ 1 + ( n − 1 ) 2 n 2 2 n 2 1 − 1 + ( n − 1 ) 2 n 2 1 − 2 n 2 ] × [ f i − 1 g i − 1 ] \left[ \begin{matrix} f_i \\ g_i \end{matrix} \right]= \left[ \begin{matrix} \frac{1+(n-1)^2}{n^2} & \frac{2}{n^2} \\ 1-\frac{1+(n-1)^2}{n^2} & 1-\frac{2}{n^2} \end{matrix} \right]\times \left[ \begin{matrix} f_{i-1} \\ g_{i-1} \end{matrix} \right] [figi]=[n21+(n1)21n21+(n1)2n221n22]×[fi1gi1]

那么

[ f m g m ] = [ 1 + ( n − 1 ) 2 n 2 2 n 2 1 − 1 + ( n − 1 ) 2 n 2 1 − 2 n 2 ] m × [ f 0 g 0 ] \left[ \begin{matrix} f_m \\ g_m \end{matrix} \right]= \left[ \begin{matrix} \frac{1+(n-1)^2}{n^2} & \frac{2}{n^2} \\ 1-\frac{1+(n-1)^2}{n^2} & 1-\frac{2}{n^2} \end{matrix} \right]^m\times \left[ \begin{matrix} f_0 \\ g_0 \end{matrix} \right] [fmgm]=[n21+(n1)21n21+(n1)2n221n22]m×[f0g0]

因为 f 0 = 1 f_0=1 f0=1,答案为 n × g m n\times g_m n×gm,所以下列矩阵的第二行第一列的数乘 n n n即为答案。

[ 1 + ( n − 1 ) 2 n 2 2 n 2 1 − 1 + ( n − 1 ) 2 n 2 1 − 2 n 2 ] m \left[ \begin{matrix} \frac{1+(n-1)^2}{n^2} & \frac{2}{n^2} \\ 1-\frac{1+(n-1)^2}{n^2} & 1-\frac{2}{n^2} \end{matrix} \right]^m [n21+(n1)21n21+(n1)2n221n22]m

这个矩阵可以用矩阵快速幂来求。

时间复杂度为 O ( ∑ log ⁡ m ) O(\sum \log m) O(logm)

code

#include<bits/stdc++.h>
using namespace std;
const long long mod=998244353;
int T;
long long n,m,ny,p1,p2,p3,p4;
struct matrix{
	long long a[2][2];
	matrix operator*(const matrix ax)const{
		matrix cx;
		for(int i=0;i<2;i++){
			for(int j=0;j<2;j++){
				cx.a[i][j]=0;
				for(int k=0;k<2;k++){
					cx.a[i][j]=(cx.a[i][j]+a[i][k]*ax.a[k][j])%mod;
				}
			}
		}
		return cx;
	}
}w;
long long in(){
	long long t=0,fl=1;
	char ch=getchar();
	while(ch<'0'||ch>'9') ch=getchar();
	while(ch>='0'&&ch<='9'){
		t=t*10+ch-'0';ch=getchar();
	}
	return t*fl;
}
long long mi(long long t,long long v){
	if(!v) return 1;
	long long re=mi(t,v/2);
	re=re*re%mod;
	if(v&1) re=re*t%mod;
	return re;
}
matrix dd(matrix t,long long v){
	matrix re;
	re.a[0][1]=re.a[1][0]=0;
	re.a[0][0]=re.a[1][1]=1;
	while(v){
		if(v&1) re=re*t;
		v>>=1;t=t*t;
	}
	return re;
}
int main()
{
	T=in();
	while(T--){
		n=in();m=in();n%=mod;
		ny=mi(n,mod-2);
		p1=(1+(n-1)*(n-1))%mod*ny%mod*ny%mod;
		p2=2*ny*ny%mod;
		p3=(1-p1+mod)%mod;
		p4=(1-p2+mod)%mod;
		w.a[0][0]=p1;w.a[0][1]=p2;
		w.a[1][0]=p3;w.a[1][1]=p4;
		w=dd(w,m);
		printf("%lld\n",w.a[1][0]*n%mod);
	}
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/903943.html

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

相关文章

一种新型的4H-SiC超结共模场效应晶体管(UMOSFET),具有异质结二极管,以提高反向恢复特性

标题&#xff1a;A novel 4H-SiC super junction UMOSFET with heterojunction diode for enhanced reverse recovery characteristics 摘要 摘要—本文提出并通过数值模拟研究了一种新型的碳化硅&#xff08;SiC&#xff09;超结共模场效应晶体管&#xff08;UMOSFET&#xf…

Python批量爬虫下载文件——把Excel中的超链接快速变成网址

本文的背景是&#xff1a;大学关系很好的老师问我能不能把Excel中1000个超链接网址对应的pdf文档下载下来。虽然可以手动一个一个点击下载&#xff0c;但是这样太费人力和时间了。我想起了之前的爬虫经验&#xff0c;给老师分析了一下可行性&#xff0c;就动手实践了。    没…

企业展示小程序搭建指南

如今&#xff0c;移动互联网的快速发展&#xff0c;为企业展示提供了更多元化的方式。除了传统的宣传手段&#xff0c;企业还可以借助小程序来展示自己的实力和产品。本文将为大家介绍一种简单的DIY小程序的方法&#xff0c;让企业能够快速打造自己的展示平台。 首先&#xff0…

在线SHA384计算哈希(不可逆的加密又称摘要)工具

具体请前往&#xff1a;在线计算Sha384摘要工具

leetcode做题笔记92. 反转链表 II

给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 示例 1&#xff1a; 思路一&#xff1a;头插法 struct ListNode *reverseBetween(struct ListNode *h…

python绘制谷歌地图

谷歌地图 更多好看的图片见pyecharts官网 import pyecharts.options as opts from pyecharts.charts import MapGlobe from pyecharts.faker import POPULATIONdata [x for _, x in POPULATION[1:]] low, high min(data), max(data)c (MapGlobe().add_schema().add(mapty…

系统架构设计专业技能 · 软件工程之需求工程

系列文章目录 系统架构设计高级技能 软件架构概念、架构风格、ABSD、架构复用、DSSA&#xff08;一&#xff09;【系统架构设计师】 系统架构设计高级技能 系统质量属性与架构评估&#xff08;二&#xff09;【系统架构设计师】 系统架构设计高级技能 软件可靠性分析与设计…

sip开发从理论到实践,让你快速入门sip

目录 引言&#xff1a; sip协议是什么&#xff1f; sip的网络结构&#xff08;重点&#xff09; sip的特点 sip使用的url sip协议的应用领域 sip协议基本的消息类型 请求消息 响应消息 sip协议的消息结构&#xff08;这个是重点&#xff09; sip的常见会话流程&#xf…

OpenCV实例(九)基于深度学习的运动目标检测(三)YOLOv3识别物体

基于深度学习的运动目标检测&#xff08;三&#xff09;YOLOv3识别物体 1.基于YOLOv3识别物体2.让不同类别物体的捕捉框颜色不同3.不用Matplotlib实现目标检测 目标检测&#xff0c;粗略地说就是输入图片/视频&#xff0c;经过处理后得到目标的位置信息&#xff08;比如左上角和…

多线程线程池

# 线程池的学习笔记总结图 图1: 图2&#xff1a; # 多线程的三种实现方式&#xff1a; 1.继承Thread类 2.实现Runnable类 3.实现Callable接口 # 线程的常见成员变量 # 线程的生命周期 # 线程的状态 # 线程池 # 自定义线程池 # 自定义线程池的使用情况的图解 一开始定义好的线…

安装Vue_dev_tools

Vue控制台出现Download the Vue Devtools extension for a better development experience: 下载Vue_dev_tools,这里给出网盘链接&#xff0c;有Vue2和Vue3的&#xff0c;dev_tools 以Google浏览器为例 点击设置&#xff08;就是那三个点&#xff09;->扩展程序->管理扩…

HummingBird 基于 Go 开源超轻量级 IoT 物联网平台

蜂鸟&#xff08;HummingBird&#xff09; 是 Go 语言实现的超轻量级物联网开发平台&#xff0c;包含设备接入、产品管理、物模型、告警中心、规则引擎等丰富功能模块。系统采用GoLang编写&#xff0c;占用内存极低&#xff0c; 单物理机可实现百设备的连接。 在数据存储上&…

华为OD机试 - 秘钥格式化 - 字符串处理(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#…

Source Insight配置Cppcheck做静态测试(Windows)

1.安装cppcheck 先从cppcheck官方网站下载cppcheck的安装包。 注&#xff1a; &#xff08;1&#xff09;官网地址&#xff1a;https://sourceforge.net/projects/cppcheck &#xff08;2&#xff09;截止2023年8月&#xff0c;官方发布的最新版本是cppcheck-2.11-x64-Setup.…

解锁Spring AOP的神秘面纱

目录 Spring AOP的组成组成部分与常用注解举例理解 Spring AOP的实现添加 Spring AOP 框架⽀持定义切⾯和切点定义通知切点表达式说明 Spring AOP 实现原理JDK动态代理CGLIB动态代理 Spring AOP作为Spring框架的核心模块&#xff0c;为我们提供了一种优雅的方式来处理横切关注点…

Java-抽象类和接口(上)

如果一个类中没有包含足够的信息来描绘一个具体的对象&#xff0c;这样的类就是抽象类 在打印图形例子中, 我们发现, 父类 Shape 中的 draw 方法好像并没有什么实际工作, 主要的绘制图形都是由 Shape 的各种子类的 draw 方法来完成的. 像这种没有实际工作的方法, 我们可以把它…

OAuth2.0一 Spring Security OAuth2.0

这里主讲OAuth2.0 学习OAuth2前提&#xff1a; 掌握Spring Security Spring Security学习 一 OAuth2.0介绍 OAuth&#xff08;Open Authorization&#xff09;是一个关于授权&#xff08;authorization&#xff09;的开放网络标准&#xff0c;允许用户授权第三方应用访问他们…

数据结构<树和二叉树>顺序表存储二叉树实现堆排

✨Blog&#xff1a;&#x1f970;不会敲代码的小张:)&#x1f970; &#x1f251;推荐专栏&#xff1a;C语言&#x1f92a;、Cpp&#x1f636;‍&#x1f32b;️、数据结构初阶&#x1f480; &#x1f4bd;座右铭&#xff1a;“記住&#xff0c;每一天都是一個新的開始&#x1…

【音视频原理】图像相关概念 ① ( 像素 | 分辨率 | 位深 )

文章目录 一、图像相关概念1、像素2、分辨率3、位深 一、图像相关概念 图像相关概念 : 像素 : 图片基本单位 ;分辨率 : 图像的像素尺寸 ;位深 : 记录每个像素点颜色时使用的位数 ;帧率 : 一秒钟传输图片的帧数 , 单位 fps , Frame Per Second ;码率 : 单位时间内视频的数据流量…