[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: 样例 ...
随机推荐
- MySQL-快速入门(13)MySQL日志
1.MySQL的日志.主要分为4类. 1>二进制日志:记录所有更改数据的语句,可以用于数据复制. 2>错误日志:记录MySQL服务的启动.运行.停止MySQL服务时出现的问题. 3> ...
- spring - 第N篇 一些笔记
1.properties文件的引入 <bean id="propertyConfigurer" class="org.springframework.beans.f ...
- vue $forceUpdate() 强制重新渲染
vue $forceUpdate() 强制重新渲染:https://blog.csdn.net/z9061/article/details/94862047
- ccs中a链接的四种状态
什么是超链接? 超链接通俗地指从一个网页指向一个目标的连接关系,这个目标可以是另一个网页,也可以是相同网页上的不同位置,还可以是一个图片,一个电子邮件地址,一个文件,甚至是一个应用程序.而在一个网页中 ...
- Python 数据分析:Pandas 缺省值的判断
Python 数据分析:Pandas 缺省值的判断 背景 我们从数据库中取出数据存入 Pandas None 转换成 NaN 或 NaT.但是,我们将 Pandas 数据写入数据库时又需要转换成 No ...
- Vue准备
Vue 模板 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UT ...
- 使用Docker搭建Jumpserver堡垒机
使用Docker搭建Jumpserver堡垒机 1.环境准备 操作系统:CentOS 7.6.1810 软件源:阿里云镜像 #内核版本(Docker 要求 CentOS 系统的内核版本高于 3.10) ...
- java程序员究竟应该掌握点什么
JAVA程序设计(基础部分) JAVA程序设计(专题)
- STM32 GPIO相关
1. STM32 的 IO 作为输入的时候,可以程序设置上下拉电阻(可以不用外接上下拉电阻). 2.GPIO有四种输入模式:浮空输入.上拉输入.下拉输入.模拟输入: 3.GPIO有四种输出模式:开漏输 ...
- 内置的configparser模块和hashlib模块
#configparser模块:配置解析模块 import configparser config = configparser.ConfigParser() #创建一个配置解析对象 config[& ...