[CSP-S模拟测试]:大佬(kat)(数学期望)
题目描述
辣鸡$ljh\ NOI$之后就退役了,然后就滚去学文化课了。
他发现$katarina$大佬真是太强了,于是就学习了一下$katarina$大佬的做题方法。
比如这是一本有$n$道题的练习册,$katarina$大佬每天都会做k道题。
第一天做第$1~k$题,第二天做第$2~k+1$题……第$n-k+1$天做第$n-k+1~n$道题。
但是辣鸡$ljh$又不想太累,所以他想知道$katarina$大佬做完这本练习册的劳累度。
每道题有它的难度值,假设今天$katarina$大佬做的题目中最大难度为$t$,那么今天$katarina$大佬的劳累度就是$w_{t_i}$,做完这本书的劳累值就是每天的劳累值之和。
但是辣鸡$ljh$一道题都不会,自然也不知道题目有多难,他只知道题目的难度一定在$1~m$之间随机。
他想让即将参加$NOIP$的你帮他算算$katarina$大佬做完这本书的劳累值期望。
输入格式
第一行,三个整数$n,m,k$。
第二行,$m$个整数表示$w_{t_1},,,,w_{t_m}$。
输出格式
输出劳累值期望对1000000007取模的值。
样例
样例输入1:
2 2 2
1 2
样例输出1:
750000007
样例输入2:
5 4 3
2 1 3 5
样例输出2:
890625018
数据范围与提示
样例1解释:
有${1,1},{1,2},{2,1},{2,2}$四种可能,期望为$\frac{7}{4}$。
数据范围:
$n\leqslant 500$。
$m\leqslant 400$。
题解
又是一道假期望……
注意这句话:第一天做第$1~k$题,第二天做第$2~k+1$题……第$n-k+1$天做第$n-k+1~n$道题。
而不是:第一天做第$1~k$题,第二天做第$k+1~2\times k$题……第$\frac{n}{k}$天做第$n-k+1~n$道题。
一看就是道概率$DP$,那么考虑怎么定义$DP$式子。
定义$dp[i][j]$表示已经做了$i$道题且最大难度小于等于$j$的劳累值期望。
考虑如何进行状态转移,分两种情况:
$\alpha.$当最大值小于$j$时,显然可以直接转移,即:$dp[i][j]=dp[i][j-1]$。
$\beta.$当最大值等于$j$时,枚举最大值第一次出现的位置:
$dp[i][j]+=\sum \limits_{l=1}^{i}dp[l-1][j]\times m^{i-l}+j\times k\times m^{i-1}+dp[i-1][j]\times m^{l-1}$
注意边界情况即可。
还需要注意的一点是,如果k<n则无解,特判一下就好啦~
时间复杂度:$\Theta(n^2m)$。
代码时刻
#include<bits/stdc++.h>
using namespace std;
int n,m,k;
long long ans;
long long w,t,l;
long long qpow(long long x,long long y)
{
long long res=1;
while(y)
{
if(y&1)res=(res*x)%1000000007;
x=(x*x)%1000000007;
y>>=1;
}
return res;
}
int main()
{
scanf("%d%d%d",&n,&m,&k);
for(int i=1;i<=m;i++)
{
scanf("%lld",&w);
t=qpow(i,k);
ans=(ans+(t-l+1000000007)*w%1000000007)%1000000007;
l=t;
}
long long inv=qpow(qpow(m,k),1000000005);
cout<<max((n-k+1),0)*ans%1000000007*inv%1000000007<<endl;
return 0;
}
rp++
[CSP-S模拟测试]:大佬(kat)(数学期望)的更多相关文章
- [CSP-S模拟测试]:不等式(数学)
题目描述 小$z$热衷于数学.今天数学课的内容是解不等式:$L\leqslant S\times x\leqslant R$.小$z$心想这也太简单了,不禁陷入了深深的思考:假如已知$L,R,S,M$ ...
- 【NOIP模拟赛】书 数学+期望概率
biubiu~~~ 对于这道傻题.........我考场上退了一个多小时才推出来这个东西是排列...........然后我打的dfs效率n!logInf正好n=9是最后一个能过的数结果前三个点的n全是 ...
- [CSP-S模拟测试]:A(数学)
题目传送门(内部题44) 输入格式 一行四个整数,分别表示$S,T,a,b$. 输出格式 输出最小步数,数据保证有解. 样例 样例输入: 10 28 4 2 样例输出: 数据范围与提示 样例解释: 先 ...
- [CSP-S模拟测试]:装饰(数学)
题目传送门(内部题147) 输入格式 每个测试点第一行一个正整数$T$,表示该测试点内的数据组数. 接下来$T$行,每行三个非负整数$a,b,c$,含义如题目中所示. 输出格式 对每组数据输出一行一个 ...
- [CSP-S模拟测试]:最大值(数学+线段树)
题目背景 $Maxtir$最喜欢最大值. 题目传送门(内部题128) 输入格式 第$1$行输入四个正整数$n,m,q$. 第$2$至$n+1$行中,第$i+1$行输入魔法晶石$i$的三种属性$(x_i ...
- [CSP-S模拟测试]:求和(数学)
题目传送门(内部题107) 输入格式 一行五个正整数$x_1,y_1,x_2,y_2,m$ 输出格式 输出一个整数,为所求的答案对$m$取模后的结果. 样例 样例输入: 2 1 5 3 10007 样 ...
- [CSP-S模拟测试]:数列(数学)
题目传送门(内部题95) 输入格式 第一行三个整数$n,a,b$,第二行$n$个整数$x_1\sim x_n$表示数列. 输出格式 一行一个整数表示答案.无解输出$-1$. 样例 样例输入:2 2 3 ...
- [CSP-S模拟测试]:Walker(数学)
题目传送门(内部题86) 输入格式 第一行$n$接下来$n$行,每行四个浮点数,分别表示变换前的坐标和变换后的坐标 输出格式 第一行浮点数$\theta$以弧度制表示第二行浮点数$scale$第三行两 ...
- [CSP-S模拟测试]:Six(数学)
题目传送门(内部题85) 输入格式 一个正整数$N$. 输出格式 一个数表示答案对$1000000007$取模后的结果 样例 样例输入1: 样例输出1: 样例输入2: 样例输出2: 样例输入3: 样例 ...
随机推荐
- python 并发编程 查看进程的id pid与父进程id ppid
查看进程id pid 不需要传参数 from multiprocessing import Process import time import os def task(): print(" ...
- Ajax请求后台数据
一.前期准备 安装好XAMPP软件,并运行起来.本文代码是基于XAMPP开发环境,XAMPP是完全免费且易于安装的Apache发行版,其中包含MariaDB.PHP和Perl.XAMPP开放源码包的设 ...
- 3.css3中多个背景图片的用法
(background-clip裁剪,background-position位置,background-origin定位,background-repeat是否重复) <!DOCTYPE htm ...
- css控制文本内容显示省略号
1,单行文字显示省略号 div{ width:200px; overflow:hideen; white-space:nowrap; text-overflow:ellipsis; } 2,多行文字显 ...
- socket 服务器向指定的客户端发消息
一.需求 需求如题. 当多个客户端连接服务器时,服务器如何给指定的客户端发送消息. 二.解决方案 核心思想: 在服务器端,需保存不同客户端的socket列表及客户端相关信息. socket含有发送方和 ...
- class path resource [applicationContext.xml] cannot be opened because it does not exis
使用maven创建web工程,将spring配置文件applicationContext.xml放在src/resource下,用eclipse编译时提示class path resource [ap ...
- tp5 模板参数配置(模板静态文件路径)
tp5 模板参数配置(模板静态文件路径) // 模板页面使用 <link rel="stylesheet" type="text/css" href=&q ...
- html常见标签及用法整理
<!DOCTYPE html> <!--#浏览器的兼容模式--> <html lang="en"> <head> <!--he ...
- 强大的VS插件CodeRush发布v19.1.4|支持Visual Studio 2019
CodeRush是一个强大的Visual Studio .NET 插件,它利用整合技术,通过促进开发者和团队效率来提升开发者体验. [CodeRush for Visual Studio v19.1. ...
- web页面调用app的方法
use_app_goto_page: (skip_type, skip_target) => { // Android App if (/android/i.test(navigator.use ...