首页 > 其他分享 >jzoj8132 扔骰子

jzoj8132 扔骰子

时间:2024-08-11 18:49:59浏览次数:9  
标签:骰子 frac jzoj8132 Max sum prod

jzoj8132 扔骰子

题面

传送门

扔 \(n\) 个骰子,第 \(i\) 个有 \(a_i\) 个面,数值为\(1\)∼\(a_i\),求扔出点数最大值的期望。


先将 \(a_i\) 排序。

则对于 \(Max=[a_{i-1}+1,a_i]\),有 \(n-i+1\) 个位置对 \(Max\) 有影响。

此时,最大值为 \(Max\) 的概率为:后 \(n-i+1\) 个都小于等于 \(Max\) 的概率,减去后 \(n-i+1\) 个都小于 \(Max\) 的概率,于是答案为:

\[\sum_{i=1}^n \frac{1}{\prod_{k=i}^{n}a_k}\sum_{j=a_{i-1}+1}^{a_i} j(j^{n-i+1}-(j-1)^{n-i+1}) \]

后面和式除了头尾的相邻两项可以消掉,于是得到:

\[\sum_{i=1}^n \frac{1}{\prod_{k=i}^{n}a_k}(a_i^{n-i+2}-(a_{i-1}+1)\times a_{i-1}^{n-i+1}-\sum_{j=a_{i-1}+1}^{a_i}j^{n-i+1}) \]

后面 \(\sum_{i=1}^ni^k\) 就是 CF622F

具体来说,经过证明可知 \(\sum _{i=1} ^n i^k\) 是一个 \(k+1\) 次多项式 \(f(n)\)。

\(n+1\) 个点确定一个 \(n\) 次多项式,我们用拉格朗日插值代入 \(n=[1,k+2]\) 这 \(k+2\) 个 \((x=n,y=f(n))\) 的值。

给出 \(n\) 次多项式的拉格朗日插值的公式:

\[f(x)=\sum _{i=1}^{n+1}y_i\prod_{j\ne i} \frac{x-x_j}{x_i-x_j} \]

直接做每次 \(O(k^2)\),考虑优化后面的分子和分母。

带入 \(k+2\) 个值可以发现,分母是 1乘到i-1 再乘 -1乘到i-k-2,可预处理,而分子也可以用一个前缀后缀的乘积表示。

于是复杂度为求 \(k+2\) 个 \(y\) 的 \(O(k\log k)\)。

在这道题中,我们可以 \(O(n^2)\) 预处理 \(y\),拉格朗日插值变为 \(O(n)\)。

总时间复杂度为 \(O(n^2)\)。

标签:骰子,frac,jzoj8132,Max,sum,prod
From: https://www.cnblogs.com/dccy/p/18353731

相关文章

  • RC-u3 骰子游戏
    目录题目描述:输入格式:输出格式:输入样例:输出样例:样例说明:解题思路(DFS)完整代码(C++)题目描述:在某个游戏中有一个骰子游戏。在游戏中,你需要投掷5个标准六面骰子(骰子为一个正方体,6个面上分别有1、2、3、4、5、6中的一个数字,骰子的质量均匀),投出的点数根据组......
  • HTML,CSS,JavaScript实例——3D骰子,跨纬度蠕虫,动态登录表单。
    文章目录一、3D筛子1.HTML2.CSS二、跨纬度蠕虫1.HTML2.CSS3.JS三、动态登录表单1.HTML2.CSS一、3D筛子1.HTML<!--ringdivstartshere--><divclass="ring"><istyle="--clr:#00ff0a;"></i><istyle="--clr:#ff0057;">&l......
  • RC-u3 骰子游戏
    睿抗2023本科第三题//包含C++标准库,用于各种通用功能,如输入输出和排序#include<bits/stdc++.h>usingnamespacestd;//全局变量声明intn,k[6],level1,level2,t[6],f[32],r[32];//函数get_level:根据五个骰子的点数,返回当前获胜等级intget_level(ints[]){//首......
  • P8624 [蓝桥杯 2015 省 AB] 垒骰子
    原题链接题解code#include<bits/stdc++.h>usingnamespacestd;#definelllonglongconstllmod=1e9+7;lla[7][7]={0},e[7]={0};voidcf1(){lltem[7]={0};for(inti=1;i<=6;i++){for(intj=1;j<=6;j++){t......
  • 【教学类-40-09】A4骰子纸模制作9.0(3.47CM嵌套骰子 一条8格便于对折,表格相连 一页3个
    作品展示背景需求:骰子调整到第8版,把骰子图案作成一长条,便于切割裁剪。【教学类-40-08】A4骰子纸模制作8.0(2.97CM嵌套骰子表格相连一页7个油墨打印A4铅画纸)-CSDN博客文章浏览阅读929次,点赞20次,收藏24次。【教学类-40-08】A4骰子纸模制作8.0(3CM嵌套骰子表格相连一页7个油......
  • 使用VHDL设计电子骰子游戏及仿真
    VHDL设计思路:首先,定义一个实体描述复杂电子骰子游戏模块。包括时钟输入、复位信号、开始信号和骰子结果等端口信号。在体系结构中,实例化一个复杂电子骰子游戏模块,并与外部信号连接。使用进程语句实现时钟驱动,从而控制时钟信号的行为。使用另一个进程语句实现测试程序。在......
  • 掷骰子(概率+动态规划)
    第1题   掷骰子查看测评数据信息玩家A和B正在玩骰子游戏。A骰子有6个面,第i个面的点数是sideA[i]。B骰子有6个面,第i个面的点数是sideB[i]。玩家A总共掷X次A骰子,每次掷骰子得到的面都是1/6的概率。玩家B总共掷Y次B骰子,每次掷骰子得到的面都是1/6的概率。玩家最终的总得......
  • 『江鸟中原』手表实现投骰子
    我是中工的葛腾辉,这是我的鸿蒙结课大作业,以下是我的作业报告。前言在日常的兵棋游戏中,投骰子是一个必不可少的环节,用来模拟各种概率,为了更方便的使用这个工具,我准备把投骰子功能移植到华为手表上。最终效果图创建项目DevEcoStudio下载安装成功后,打开DevEcoStudio,点击左上角的File......
  • P8624 [蓝桥杯 2015 省 AB] 垒骰子
    这道题的数据范围比较突出:1<=N<=1e9先写一个O(N)算法:#include<iostream>#include<stdio.h>#include<algorithm>#include<cstring>#defineintlonglongusingnamespacestd;constintmod=1e9+7;intn,m,g[8][8],f[8],op[8],bf[8];......
  • 【项目二】WPF掷骰子
    一、素材地址:https://icons8.com/icons/set/dice二、需求分析:WPF框架实现一个掷骰子动画:有6个点数的骰子图片,初始时图片默认为1点,当点击开始按钮后,随机变换图片,2s后定格到当前骰子点数。三、代码实现:1.需要将骰子的6张图片放在项目的"Images"文件夹下,并设置它们的BuildActio......