Trick :无 trick,概率 DP

题目链接

E - Random Swaps of Balls (atcoder.jp)

Statements

Problem Statement

There are N − 1 N - 1 N1 white balls and one black ball. These N N N balls are arranged in a row, with the black ball initially at the leftmost position.

Takahashi will perform the following operation exactly K K K times.

  • Choose an integer uniformly at random between 1 1 1 and N N N, inclusive, twice. Let a a a and b b b the chosen integers. If a ≠ b a \neq b a=b, swap the a a a-th and b b b-th balls from the left.

After K K K operations, let the black ball be at the x x x-th position from the left. Find the expected value of x x x, modulo 998244353 998244353 998244353.

Solution

d p i , j dp_{i,j} dpi,j 表示第 i i i 轮黑球位于位置 j j j 的概率

根据期望定义 : r e s = ∑ i = 1 N d p i , j ∗ i res=\sum_{i=1}^N dp_{i,j}*i res=i=1Ndpi,ji

发现 2 ~ N 其实是没有区别的位置,即 :

d p k , 2 = d p k , 3 = ⋯ = d p k , N dp_{k,2}=dp_{k,3}=\cdots=dp_{k,N} dpk,2=dpk,3==dpk,N

所以 :
r e s = d p k , 2 ∗ ∑ i = 2 N i + d p k , 1 res=dp_{k,2}*\sum_{i=2}^N i+dp_{k,1} res=dpk,2i=2Ni+dpk,1

d p k , 2 dp_{k,2} dpk,2 可以递推 :

λ \lambda λ 为黑球保持不变的概率,多少我忘了

这一轮位于 x =上一轮位于 x * 保持 + 上一轮不位于 * 交换

公式我也懒得写了

Code

#include<bits/stdc++.h>
using namespace std;
#define int long longint const mod = 998244353;int ksm(int a, int k, int p){int res = 1;a %= p;while(k){if(k & 1) res = res * a % p;k >>= 1;a = a * a % p;}return res;
}
int inv(int x){x %= mod;return ksm(x, mod - 2, mod);
}
int n, k;
void solve(){cin >> n >> k;int p = 2LL * inv(n * n) % mod;for(int i = 2; i <= k; i ++){int t1 = 2LL * inv(n * n) % mod;int t2 = ((n * n % mod - 2 * n) % mod + mod) % mod;t2 = t2 * inv(n * n) % mod;p = (t1 + t2 * p % mod) % mod;}int res = 0; int tmp = ((n * (n + 1) % mod * inv(2LL) - 1) % mod + mod) % mod;res = tmp * p % mod; (p = (n * n % mod - 2 * n + 2) % mod + mod) %= mod;p = p * inv(n * n) % mod;for(int i = 2; i <= k; i ++){int t1 = 2LL * inv(n * n) % mod;int t2 = ((n * n % mod - 2 * n) % mod + mod) % mod;t2 = t2 * inv(n * n) % mod;p = (t1 + t2 * p % mod) % mod;} (res += p) %= mod;cout << res << '\n'; 
}signed main(){ios::sync_with_stdio(false);cin.tie(0), cout.tie(0); solve();return 0;
}

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

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

相关文章

Qt之Pdb生成及Dump崩溃文件生成与调试(含注释和源码)

文章目录 一、Pdb生成及Dump文件使用示例图1.Pdb文件生成2.Dump文件调试3.参数不全Pdb生成的Dump文件调试 二、个人理解1.生成Pdb文件的方式2.Dump文件不生产的情况 三、源码Pro文件mian.cppMainWindowUi文件 总结 一、Pdb生成及Dump文件使用示例图 1.Pdb文件生成 下图先通过…

SpringMVC(1)——入门程序+流程分析

MVC都是哪三层&#xff1f;在Spring里面分别对应什么&#xff1f;SpringMVC的架构是什么&#xff1f; 我们使用Spring开发JavaWeb项目&#xff0c;一般都是BS架构&#xff0c;也就是Browser&#xff08;浏览器&#xff09;-Server&#xff08;服务器&#xff09;架构 这种架构…

MIG核使用APP接口,app_ref_req直接置0可以吗

这是一个关于MIG&#xff08;Memory Interface Generator&#xff09;核使用APP&#xff08;Application&#xff09;接口时&#xff0c;app_ref_req信号处理的重要问题。 app_ref_req信号的作用&#xff1a; 这是一个输入信号&#xff0c;允许应用程序请求执行刷新操作。当置高…

基于SpringBoot的超市进销存系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot框架 工具&#xff1a;MyEclipse、Tomcat 系统展示 首页 首页界面图 个人中心 个人中心…

爬虫技术在物联网数据采集中的应用

爬虫技术在物联网数据采集中的应用案例主要包括以下几个方面&#xff1a; 电商平台数据采集&#xff1a;例如&#xff0c;使用Python编写的网络爬虫可以用于爬取京东网页相关数据&#xff0c;如品牌、标题、价格、店铺等&#xff0c;并进行数据处理及可视化展示。这种方法不仅可…

ESP32实现UDP连接——micropython版本

代码&#xff1a; import network import socket import timedef wifiInit(name, port):ap network.WLAN(network.AP_IF) # 创建一个热点ap.config(essidname, authmodenetwork.AUTH_OPEN) # 无需密码ap.active(True) # 激活热点ip ap.ifconfig()[0] # 获取ip地址print(…

【D3.js in Action 3 精译】1.1.2 D3.js 的适用场景

译注 上一节中我们了解了 D3 诞生的技术背景——为了满足 Web 可访问数据的可视化需求。本节再来看看 D3.js 的适用场景是怎样的、在什么时候会考虑使用 D3.js。 1.1.2 D3.js 的适用场景 数据可视化领域正蓬勃发展&#xff0c;且备受青睐。过去十年间用于生成数据驱动图形的工…

【Android面试八股文】如何判断一个APP在前台还是后台?有哪几种方法?

文章目录 1. ActivityLifecycleCallbacks2. RunningTasks 和 RunningProcesses2.2.1 RunningTasks实现步骤示例代码解释与注意事项替代方案2.2 RunningProcesses实现步骤示例代码解释与注意事项总结3. 使用 Activity 生命周期方法在最新的 Android 开发环境中,推荐的做法是使用…

slot插槽详解及动态插槽的使用

slot插槽的作用: 让用户可以拓展组件,更好地去复用组件,并对其做定制化; slot的用法: 可以分为三类:默认插槽、具名插槽、作用域插槽 插槽用<slot>标签来确定渲染的位置,里面可以包含默认内容,如果没有提供插槽内容,则显示默认内容; 默认插槽: 子组件中…

动态代理和静态代理的区别

动态代理和静态代理在多个方面都有显著的区别。 首先&#xff0c;从代理的对象来看&#xff0c;静态代理通常只代理一个类&#xff0c;而动态代理则可以代理一个接口下的多个实现类。静态代理在编程时就已经明确知道要代理哪个类&#xff0c;而动态代理在运行时才决定要代理的…

Linux—进程与计划管理

目录 一、程序 二、进程 1、什么是进程 2、进程的特点 3、进程、线程、携程 3.1、进程 3.2、线程 3.3、携程 三、查看进程信息 1、ps -aux 2、ps -elf 3、top ​3.2、输出内容详解 3.2.1、输出第一部分解释 3.2.2、输出第二部分解释 4、pgrep 5、pstree 四、进…

【项目】论坛系统项目自动化测试

论坛系统项目自动化测试 前述一、脑图二、代码编写1.公共类InitAndEnd1.登录页面测试ForumLoginTest正常登录&#xff1a;异常登录&#xff1a; 3.注册页面测试ForumRegisterTest注册成功&#xff1a;注册失败&#xff1a; 4论坛列表页面测试ForumListTest登录状态下&#xff1…

1.spring入门案例

Spring 介绍 Spring是轻量级的开源的JavaEE框架。 Spring有两个核心部分&#xff1a;IOC和AOP IOC 控制反转&#xff0c;把创建对象过程交给Spring进行管理。 AOP 面向切面&#xff0c;不修改源代码进行功能增强。 Spring特点 1.方便解耦&#xff0c;简化开发。 2.AOP编…

算法体系-25 第二十五节:窗口内最大值或最小值的更新结构

一 滑动窗口设计知识点 滑动窗口是什么&#xff1f; 滑动窗口是一种想象出来的数据结构&#xff1a; 滑动窗口有左边界L和有边界R 在数组或者字符串或者一个序列上&#xff0c;记为S&#xff0c;窗口就是S[L..R]这一部分 L往右滑意味着一个样本出了窗口&#xff0c;R往右滑意味…

【MySQL】库的操作【创建和操纵】

文章目录 1.创建数据库1.1字符集和校验规则1.查看系统默认字符集以及校验规则2.查看数据库支持的字符集以及校验规则 1.2校验规则对数据库的影响1.创建一个数据库&#xff0c;校验规则使用utf8_ general_ ci[不区分大小写]2.创建一个数据库&#xff0c;校验规则使用utf8_ bin[区…

python基础之正则表达式

Python中的正则表达式&#xff08;regular expressions&#xff0c;简称regex&#xff09;是强大的字符串处理工具&#xff0c;用于搜索、匹配和替换字符串中的特定模式。Python通过 re 模块提供对正则表达式的支持。以下是对Python正则表达式的详细讲解。 基本概念和语法 导…

MSPM0G3507——QEI

在支持QEI的TIMGx实例中&#xff0c;正交编码器接口&#xff08;QEI&#xff09;模式提供了一个到正交编码器输出的接口。它对正交编码数据进行解码&#xff0c;以提供关于线性或旋转运动的相对定位和移动的信息。 QEI由两个格雷编码的正交输入信号PHA和PHB以及索引输入信号IDX…

Postman接口测试工具的原理及应用详解(三)

本系列文章简介: 在当今软件开发的世界中,接口测试作为保证软件质量的重要一环,其重要性不言而喻。随着前后端分离开发模式的普及,接口测试已成为连接前后端开发的桥梁,确保前后端之间的数据交互准确无误。在这样的背景下,Postman作为一款功能强大、易于使用的接口测试工…

使用session.setAttribute存储会话属性

使用session.setAttribute存储会话属性 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;在本文中&#xff0c;我们将深入探讨如何在Java Web应用中使用session.s…

flask的基本使用2

上一篇我们介绍了基本使用方法 flask使用 【 1 】基本使用 from flask import Flask# 1 实例化得到对象 app Flask(__name__)# 2 注册路由--》写视图函数 app.route(/) def index():# 3 返回给前端字符串return hello worldif __name__ __main__:# 运行app&#xff0c;默认…