【学习笔记】[SDOI2017] 硬币游戏

抽象😅

我忍不了了,直接上概率生成函数😅

首先要做过这道题 [CTSC2006] 歌唱王国

F i ( x ) = ∑ f j x j F_i(x)=\sum f_jx^j Fi(x)=fjxj,其中 f j f_j fj表示 ∣ T ∣ = j |T|=j T=j时第 i i i个人获胜的概率

G ( x ) = ∑ g j x j G(x)=\sum g_jx^j G(x)=gjxj,其中 g j g_j gj表示 ∣ T ∣ = i |T|=i T=i时无人获胜概率

对于 i i i,有方程:

F i ( x ) = G ( x ) × x m × 1 2 m − ∑ F j ( x ) × tran ( j , i ) F_i(x)=G(x)\times x^m\times \frac{1}{2^m}-\sum F_j(x)\times \text{tran}(j,i) Fi(x)=G(x)×xm×2m1Fj(x)×tran(j,i)

注意到还有一条方程: G ( x ) = x G ( x ) − ∑ F i ( x ) + 1 G(x)=xG(x)-\sum F_i(x)+1 G(x)=xG(x)Fi(x)+1

考虑这个算法的本质🤔 注意到 G ( 1 ) G(1) G(1)其实就是停下来时 ∣ T ∣ |T| T的期望

这样有 n + 1 n+1 n+1个未知数, n + 1 n+1 n+1个方程,直接高斯消元即可。

复杂度 O ( n 3 ) O(n^3) O(n3)

#include<bits/stdc++.h>
#define pb push_abck
#define fi first
#define se second
#define db double
#define ll long long
#define ull unsigned long long
using namespace std;
const int P=13331;
int n,m;
string str[305];
db a[505][505];
db fac2[505];
ull fac[305],h[305][305];
ull get(int i,int l,int r){return (h[i][r]-h[i][l-1])*fac[m-l];
}
void solve(){for(int i=1;i<=n+1;i++){for(int j=1;j<=n+1;j++){if(i!=j){db tmp=a[j][i]/a[i][i];for(int k=i;k<=n+2;k++)a[j][k]-=a[i][k]*tmp;}}}
}
int main() {ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>n>>m;for(int i=1;i<=n;i++)cin>>str[i];fac[0]=1;for(int i=1;i<=m;i++)fac[i]=fac[i-1]*P;fac2[0]=1;for(int i=1;i<=m;i++)fac2[i]=fac2[i-1]/2;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++)h[i][j]=h[i][j-1]+str[i][j-1]*fac[j];}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){for(int k=1;k<m;k++){if(get(i,k+1,m)==get(j,1,m-k)){a[j][i]+=fac2[k];}}}}for(int i=1;i<=n;i++)a[i][i]+=1,a[i][n+1]=-fac2[m];for(int i=1;i<=n;i++)a[n+1][i]=1;a[n+1][n+2]=1;solve();for(int i=1;i<=n+1;i++)cout<<fixed<<setprecision(10)<<a[i][n+2]/a[i][i]<<"\n";
} 

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

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

相关文章

[CKA]考试之查看pod的cpu

由于最新的CKA考试改版&#xff0c;不允许存储书签&#xff0c;本博客致力怎么一步步从官网把答案找到&#xff0c;如何修改把题做对&#xff0c;下面开始我们的 CKA之旅 题目为&#xff1a; Task 找出标签是namecpu-loader的Pod&#xff0c;并过滤出使用CPU最高的Pod&#…

用python实现猜数字游戏

1 问题 如何来判断玩家输入的数据类型来避免报错&#xff1f; 解决&#xff1a; 使用isdigit函数来判断玩家输入的数据类型是否为数字&#xff0c;是则继续运行反之则提醒玩家输入的内容不合法。 如何限制玩家输入字符的数量&#xff1f; 解决&#xff1a;定义一个最大常量和最…

Spring Boot集成Mybatis-Plus

Spring Boot集成Mybatis-Plus 1. pom.xml导包 <!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!--mysql驱动--><dependency><groupId>mysql<…

论 SoC上的Linux如何拉动外部I/O

在MCU中&#xff08;如classic autosr或其他RTOS&#xff09;&#xff0c;一般可以直接通过往对应的寄存器&#xff08;地址转为指针&#xff09;写值&#xff0c; 或者调用一些硬件抽象层或者驱动接口来拉动芯片提供的GPIO。 但是在Linux中&#xff0c;可能不会让应用层直接去…

我在leetcode用动态规划炒股

事情是这样的&#xff0c;突然兴起的我在letcode刷题 121. 买卖股票的最佳时机122. 买卖股票的最佳时机 II123. 买卖股票的最佳时机 III 以上三题。 1. 121. 买卖股票的最佳时机 1.1. 暴力遍历&#xff0c;两次遍历 1.1.1. 算法代码 public class Solution {public int Ma…

【Redis】——RDB快照

Redis 是内存数据库&#xff0c;但是它为数据的持久化提供了两个技术&#xff0c;一个是AOF日志&#xff0c;另一个是RDB快照&#xff1a; AOF 文件的内容是操作命令&#xff1b;RDB 文件的内容是二进制数据。 RDB 快照就是记录某一个瞬间的内存数据&#xff0c;记录的是实际…

机器学习深度学习——卷积神经网络(LeNet)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——池化层 &#x1f4da;订阅专栏&#xff1a;机器学习&&深度学习 希望文章对你们有所帮助 卷积神…

Python Opencv实践 - 基本图像IO操作

import numpy as np import cv2 as cv import matplotlib.pyplot as plt#读取图像 #cv2.IMREAD_COLOR&#xff1a; 读取彩色图像&#xff0c;忽略alpha通道&#xff0c;也可以直接写1 #cv2.IMREAD_GRAYSCALE: 读取灰度图&#xff0c;也可以直接写0 #cv2.IMREAD_UNCHANGED: 读取…

C高级【day4】

思维导图&#xff1a; 写一个函数&#xff0c;获取用户的uid和gid并使用变量接收&#xff1a; #!/bin/bashfunction get_uid {my_uidid -umy_gidid -g }get_uid echo "当前用户的UID&#xff1a;$my_uid" echo "当前用户的GID&#xff1a;$my_gid"整理冒泡…

论文代码学习—HiFi-GAN(4)——模型训练函数train文件具体解析

文章目录 引言正文模型训练代码整体训练过程具体训练细节具体运行流程 多GPU编程main函数&#xff08;通用代码&#xff09;完整代码 总结引用 引言 这里翻译了HiFi-GAN这篇论文的具体内容&#xff0c;具体链接。这篇文章还是学到了很多东西&#xff0c;从整体上说&#xff0c…

FPGA学习——Altera IP核调用之PLL篇

文章目录 一、IP核1.1 IP核简介1.2 FPGA中IP核的分类1.3 IP核的缺陷 二、PLL简介2.1 什么是PLL2.2 PLL结构图2.3 C4开发板上PLL的位置 三、IP核调用步骤四、编写测试代码五、总结 一、IP核 1.1 IP核简介 IP核&#xff08;知识产权核&#xff09;&#xff0c;是在集成电路的可…

PHP和nginx是什么关系?是如何交互的?底层原理是什么?

PHP和nginx是什么关系?是如何交互的?底层原理是什么? PHP和nginx是什么关系?是如何交互的?底层原理是什么?FastCGIPHP和nginx是什么关系? 客户端发送HTTP请求到nginx服务器。 是如何交互的? nginx服务器接收到请求后,根据请求的URL地址和其他相关信息,选择对应的P…

8-7 homework

1.思维导图 2.写一个函数&#xff0c;获取用户的uid和gid并使用变量接收 3.bubble_sort #include <stdio.h>//先排好的都是放在最后的&#xff0c;所以for的内层限制条件是不把后面的计算在内的&#xff0c;内层只循环前面的 int main(){int a [10]{11,42,3,24,65,16,73…

数据结构——红黑树基础(博文笔记)

数据结构在查找这一章里介绍过这些数据结构&#xff1a;BST&#xff0c;AVL&#xff0c;RBT&#xff0c;B和B。 除去RBT&#xff0c;其他的数据结构之前的学过&#xff0c;都是在BST的基础上进行微小的限制。 1.比如AVL是要求任意节点的左右子树深度之差绝对值不大于1,由此引出…

centos7 yum源安装出错及更新问题

如下 首先&#xff0c;在搜索jdk时报错如下&#xff1a; 解决办法 1、进入 yum的repo目录 cd /etc/yum.repos.d/2、修改所有的CentOS文件内容 sed -i s/mirrorlist/#mirrorlist/g /etc/yum.repos.d/CentOS-*sed -i s|#baseurlhttp://mirror.centos.org|baseurlhttp://vau…

怎样在 CentOS 里下载 RPM 包及其所有依赖包

前几天我尝试去创建一个仅包含我们经常在 CentOS 7 下使用的软件的本地仓库。当然,我们可以使用 curl 或者 wget 下载任何软件包,然而这些命令并不能下载要求的依赖软件包。你必须去花一些时间而且手动的去寻找和下载被安装的软件所依赖的软件包。然而,我们并不是必须这样。…

Report Sharp-Shooter Lite Edition Crack

Report Sharp-Shooter Lite Edition Crack 报告Sharp Shooter™ 是为.NET Framework设计的&#xff0c;使用C#编写&#xff0c;并且只包含100%的托管代码。Report Sharp Shooter能够从多个数据源生成任何复杂的报告&#xff0c;并将生成的报告导出为大多数格式&#xff0c;包括…

智能体脂秤方案——脂肪秤芯片CSU18M91

随着各种疾病的知识普及和人们生活方式发生的改变&#xff0c;越来越多的人注意到健康问题&#xff0c;拿经常坐办公室的人群来说&#xff0c;他们对于腰颈椎和肥胖的问题就关注度比较高&#xff0c;因为经常久坐和点外卖&#xff0c;再加上工作量大没有空闲时间锻炼身体&#…

机器学习笔记之优化算法(八)简单认识Wolfe Condition的收敛性证明

机器学习笔记之优化算法——简单认识Wolfe Condition收敛性证明 引言回顾&#xff1a; Wolfe \text{Wolfe} Wolfe准则准备工作推导条件介绍推导结论介绍 关于 Wolfe \text{Wolfe} Wolfe准则收敛性证明的推导过程 引言 上一节介绍了非精确搜索方法—— Wolfe \text{Wolfe} Wolf…

Wavefront .OBJ文件格式解读【3D】

OBJ&#xff08;或 .OBJ&#xff09;是一种几何定义文件格式&#xff0c;最初由 Wavefront Technologies 为其高级可视化器动画包开发。 该文件格式是开放的&#xff0c;已被其他 3D 图形应用程序供应商采用。 OBJ 文件格式是一种简单的数据格式&#xff0c;仅表示 3D 几何体&…